c语言求素数

2025-02-25 18:41:01
推荐回答(5个)
回答1:

#include
void main()

int a,b,x;
for(a=100;a<=200;a++)

x=0;                //防止上一次的影响,每次x归零
for(b=2;b {  
if(a%b==0) //if(条件)后要加语句,不能直接用else,把条件转换一下就行
x=1;//这里用x标记有没有可以的因数,有x=1,没有还是0
}
if (x!=1)          //x!=1或x==0都是一样的
printf("%d\n",a);//\n为了美观
}
}

你的想法有问题,如果a不是b的倍数输出,那要输出多少个?它判断100多次输出100多次?

还有if里面条件不能用=,=是赋值,判断相等是==

回答2:

算法依据:如果一个数 m ,不能被任何从2到它加 1 的平方根之间的任何一个数整除,那么它就是一个素数。 

#include 
#include 
int main()

    int m,i,k;
    bool isLeap = true;
    //从100循环到200逐个测试是否为素数
    for(m=100;m<=200;m++){ 
      //初始化标志位素数
      isLeap = true; 
      //取m+1的平方根
      k = (int)sqrt((double)( m + 1) ); 
      //用i去除以m,以测试是否为素数
      for(i=2;i<=k;i++){
        if(m%i==0) {
          //不是素数,跳出循环
          isLeap = false;
          break;
        }
      }
      if(isLeap) {
        //输出素数 
        printf("%d\n",m);
      }
    }

回答3:

思路上虽然不够简洁,但是没有错误。
程序有错误。
if(a%b=0) else ptintf("%d",a);
不能这么写,而且=和==是不一样的,不要犯低级错误。
应该是
for(b=2;b if (a % b == 0)
continue;
}
printf("%d",a);
要对所有的除数判定完才能给结果的。

回答4:

if(a%b=0) ??

回答5: