四仰化三铁 发表于 2020-12-14 21:26:01

求一百到二百之间的素数


#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:41:53

本帖最后由 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);
      }
}

四仰化三铁 发表于 2020-12-14 21:48:31

jackz007 发表于 2020-12-14 21:41
外层循环新的 n 值出现的时候,一定要把 m 赋 0 值,假定它就是一个素数,然后在内层循环中尽量否 ...

明白了
m==0

hornwong 发表于 2020-12-15 10:46:02

感谢分享!

bhcqzf 发表于 2020-12-16 09:43:09

感谢分享

大聪明14 发表于 2021-1-2 00:20:23

哈哈 =是赋值
页: [1]
查看完整版本: 求一百到二百之间的素数