求一百到二百之间的素数
#include<stdio.h>
#include<math.h>
int main()
{
printf("100到200之间所有的质数为:\n");
int n;
for(n=100;n<=200;n++)
{
int y,m;
y=sqrt(n);
for(int x=2;x<=y;x++)
{
if(n%x==0)
{
m=1;
break;
}
else
{
m=0;
}
}
if(m=0)
{
printf("%d\n",n);
}
}
}
请问大佬我这样做为什么一个素数也出不来,看了好几遍还是没发现哪里错了,望赐教 本帖最后由 jackz007 于 2020-12-14 21:48 编辑
外层循环新的 n 值出现的时候,一定要把 m 赋 0 值,假定它就是一个素数,然后在内层循环中尽量否定,如果循环过后无法否定,那它就确实是一个素数无疑。
还有一个问题,就是打印素数判断 m 值时,你写的是
if(m = 0)
这个是赋值,可不是逻辑判断
#include<stdio.h>
#include<math.h>
int main()
{
int n , m , x ;
printf("100到200之间所有的质数为:\n") ;
for(n = 100 ; n <= 200 ; n ++) {
for(m = 0 , x = 2 ; x <= sqrt(n) ; x ++) {
if(n % x == 0) {
m = 1 ;
break ;
}
}
if(m == 0) printf("%d\n" , n);
}
} jackz007 发表于 2020-12-14 21:41
外层循环新的 n 值出现的时候,一定要把 m 赋 0 值,假定它就是一个素数,然后在内层循环中尽量否 ...
明白了
m==0 感谢分享! 感谢分享 哈哈 =是赋值
页:
[1]