#include "stdio.h"
創(chuàng)新互聯(lián)長期為上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為雷州企業(yè)提供專業(yè)的網(wǎng)站制作、做網(wǎng)站,雷州網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
#include "math.h"http://判斷一個(gè)整數(shù)是否為素?cái)?shù)
bool prime(int x)
{
int i;
for(i=2;i= sqrt(x);i++)
{
if(x%i==0)
return false;
}
return true;
} //判斷一個(gè)整數(shù)(1位或多位)是否每一位都是素?cái)?shù)
bool allPrime(int a)
{
if(prime(a%10)) //如果個(gè)位是素?cái)?shù)
{
a=a/10;
return allPrime(a);
}
else
return false;
}// 打印出1-5000內(nèi)滿足題意的素?cái)?shù)
void printPrime()
{
int i;
int a=0;
for( i=11;i5000;) // 1-9 不用再判斷了,只有一位。10和5000很明顯也不用去判斷了,不是素?cái)?shù)
{
if(prime(i)) // 如果i是素?cái)?shù),判斷個(gè)位是不是素?cái)?shù),如果個(gè)位不是,不滿足第二個(gè)條件
{
if(prime(i%10)) //判斷個(gè)位
{
a=i/10 ; //a就是去掉個(gè)位后的數(shù)
if(prime(a)) //判斷a 是否是素?cái)?shù),如果是,再判斷a每一位是否是素?cái)?shù)
{
if(allPrime(a))
printf("%d\n",i);
} }
}
i+=2;
}
}int main()
{
printPrime();
}
先編寫一個(gè)判斷素?cái)?shù)的函數(shù),類型為bool型
bool Isprime(int number)
{
for (int i = 2; i number; i++)
if (number mod i != 0)
return false;
return true;
}
上面的代碼還可以繼續(xù)優(yōu)化,只是給你提供個(gè)思路
然后在主函數(shù)里面循環(huán)調(diào)用這個(gè)函數(shù) 比如數(shù)組num[N] 循環(huán)N次,將num[i] 作為參數(shù)調(diào)用上面的函數(shù),然后看返回值,如果未true 素?cái)?shù)的個(gè)數(shù)+1,就可以了
樓主的代碼看的真是讓我蛋疼,全局太多、函數(shù)定義和聲明參數(shù)都沒有類型、判斷是否素?cái)?shù)居然返回double、printf用法錯(cuò)誤...各種我就不說了,給你修改了一下,編譯運(yùn)行成功,代碼如下:
#includestdio.h
bool prime(int x);
int main()
{
int m,n,count=0,i,sum=0;
scanf("%d",m);
scanf("%d",n);
for(i=m;i=n;i++){
if(prime(i))
{
count++;
sum=sum+i;
}
}
printf("count=%d,sum=%d\n",count,sum);
return 0;
}
bool prime(int x)
{
int a;
bool result = false;
for(a=2;a*a=x;a++)
{
if(x%a==0)
break;
}
if(a*ax)
result = true;
return result;
}