求100-200的质数,无法显示结果

问题描述:

#include<stdio.h>
#include<math.h>
void main(){
int judge(int m);
int i;
printf("100到200之间的素数有:\n");
for( i = 101; i < 200; i+=2)
judge( i );
}
int judge(int m){
int n, k;
k = sqrt(m);
for (n = 3; n < k ; n ++){
if( m % n == 0) break;
else if( n == m -1) printf("%d ", m);
}
}
将循环里的k换成m,就可以显示,不明白k有什么问题。谢谢好心人解答。


else if( n == m -1) printf("%d ", m);
改为
if( n ==k) printf("%d ", m);

放到循环语句的外面,修改如下:


void judge(int m){
  int n, k;
  k = sqrt(m);
  for (n = 3; n < k ; n ++){
    if( m % n == 0) break;
  }
   if( n == k) printf("%d ", m);
}

else的位置不对啊

#include<stdio.h>
#include<math.h>
void main(){
int judge(int m);
int i;
printf("100到200之间的素数有:\n");
for( i = 101; i < 200; i+=2)
judge( i );

}
int judge(int m){
int n, k;
k = sqrt(m);
for (n = 3; n < k ; n ++){
if( m % n == 0) 
break;

}
if(n>=k) printf("%d ", m);
return 0;
}