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