|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#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 值时,你写的是
这个是赋值,可不是逻辑判断
- #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) ;
- }
- }
复制代码
|
|