请问素数的代码哪儿出错了,多谢各位
请教求一个素数的代码哪儿出错了,谢谢各位
# include <stdio.h>
int main(void)
{
int a;
printf("Please input a good number:\n");
scanf("a\n", &a);
if ( a / a = 1 && a / 1 = a )
{
printf("It's a good number\n");
}
else
{
printf("It's not a good number");
}
return 0;
}
------解决思路----------------------
if ( a / a = 1 && a / 1 = a )
这条语句会报错,不能给表达式赋值。
另外,即便把赋值符号改成逻辑相等判断,这语句也是永真的。
------解决思路----------------------
第一:
在if 判断内:
a / a 和 a /1 会返回右值, 给一个右值赋值 是非法的,当然会报错!
将其改成 a /a == 1 && a / 1 == a 变不会报错了。
其次:
楼主逻辑 有问题, 不是被1和自身整除的数 就叫 素数,那么任何整数都是 素数了。
代码可参考如下:
# include <stdio.h>
int main(void)
{
int a;
printf("Please input a good number:\n");
scanf("a\n", &a);
if ( a / a = 1 && a / 1 = a )
{
printf("It's a good number\n");
}
else
{
printf("It's not a good number");
}
return 0;
}
------解决思路----------------------
if ( a / a = 1 && a / 1 = a )
这条语句会报错,不能给表达式赋值。
另外,即便把赋值符号改成逻辑相等判断,这语句也是永真的。
------解决思路----------------------
第一:
在if 判断内:
a / a 和 a /1 会返回右值, 给一个右值赋值 是非法的,当然会报错!
将其改成 a /a == 1 && a / 1 == a 变不会报错了。
其次:
楼主逻辑 有问题, 不是被1和自身整除的数 就叫 素数,那么任何整数都是 素数了。
代码可参考如下:
# include <stdio.h>
int main(void)
{
int a;
int i;
bool isGoodNumber = true;
printf("Please input a good number:\n");
scanf("a\n", &a);
for(i = 2;i < a / 2;++i)
{
if(a % i == 0){
isGoodNumber = false;
}
}
if (isGoodNumber == true)
{
printf("It's a good number\n");
}
else
{
printf("It's not a good number");
}
return 0;
}