| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
求助:随机是生成200个四位数,然后求出其中各个位数之和为质数的个数。我的代码是存在问题的,但是我不清楚是在Sushu素数函数判断这里的问题,还是在主函数中for循环中判断素数个数出现的问题!谢谢大家帮忙解答! 
/*用随机函数产生200个四位整数,求满足千位、百位、十位、个位之和为素数的个数*/ 
 
- #include<stdio.h>
 
 - #include<stdlib.h>
 
 - #include<time.h>
 
 - #include<math.h>
 
 - int Sushu(int s){ //想调用这个函数判断是不是素数
 
 -         int i,flag;
 
 -         for(i=2;i<s;i++){
 
 -                 if(s%i==0){
 
 -                         flag=0;
 
 -                 }
 
 -                 else{
 
 -                         flag=1;
 
 -                 }
 
 -         }
 
 -         return flag;
 
 - }
 
 - int main()
 
 - {
 
 -         int e,b,c,d,sum,n;
 
 -         int flag=0,i,j,a[200];
 
 -         srand((int)time(0));
 
 -         for(i=0;i<200;i++){
 
 -                 a[i]=rand()%9000+1000;
 
 -                 e=a[i]/1000;
 
 -                 b=a[i]%1000/100;
 
 -                 c=a[i]%100/10;
 
 -                 d=a[i]%10;
 
 -                 sum=e+b+c+d; //求各个位数之和
 
 -                 if(Sushu(sum)==0){ //根据Sushu的函数判断sum是不是素数,如果是素数,flag+1;
 
 -                         flag++;
 
 -                 }
 
 -         }
 
 -         printf("%d\n",flag);
 
 - }
 
  复制代码 
只要有一个数取余等于0,就可以判断出它不是素数,就可以退出for循环了 
- int Sushu(int s){ //想调用这个函数判断是不是素数
 
 -         int i,flag;
 
 -         for(i=2;i<s;i++){
 
 -                 flag = 1;
 
 -                 if(s%i==0){
 
 -                         flag=0;
 
 -                         break;
 
 -                 }
 
 -         }
 
 -         return flag;
 
 - }
 
  复制代码 
 
 
 |   
 
 
 
 |