我试图找到素数而且似乎我犯了错误,但我几个小时都找不到它 这是我的代码:
#include<stdio.h>
#include<math.h>
int main(){
int n,a,b;
printf("enter a number=> \n");
scanf("%d",&n);
for(a=2;a<=n;a++){
for(b==2;b<=a;b++){
if(a%b==0){
break;
}else{printf("Prime number: %d\n",a);}
}
}
return 0;
}
b假设增加但不增加,我也分配了b == 2但它打印出b = 1
答案 0 :(得分:1)
更改
for(b==2;b<=a;b++)
// ^ Replace it with assignment operator '='
到
for(b = 2; b*b <=a; b++)
// ^ Reduce the unnecessary loop iteration.
答案 1 :(得分:1)
b == 2
将b
与2
进行比较,如果它们都具有相同的值,则评估为1
,如果它们的评估为0
是不同的。
您似乎希望在那里进行分配,而不是b = 2
。
之后,您还应该考虑在更严格的情况下运行printf
声明,而不是每次a % b
都不等于0
。例如,当b
最终等于a - 1
时,可能会出现更严格的情况。
您可以通过将代码更改为以下内容,以最少的更改完成所有操作:
#include <stdio.h>
#include <math.h>
int main( ){
int n, a, b;
printf( "enter a number=> \n" );
scanf( "%d", &n );
for ( a = 2; a <= n; a++ ){
for ( b = 2; b <= a; b++ ){ // removed one = sign
if ( a % b == 0 ){
break;
}
else if ( b == a - 1 ) { // added the if ( b == a - 1 )
printf( "Prime number: %d\n", a );
}
}
}
return 0;
}
答案 2 :(得分:0)
您需要使用=
代替==
。