C语言判断素数的程序出了问题
#include <stdio.h>int main(){
int sum1;
int K;
int isprime;
scanf("%d",&sum1);//输入数字
for(K=1;K<sum1;K++){
if(sum1%K==0){
isprime=0;//判断是否为素数
break;
}else{
isprime=1;
}
}if(isprime==1){
printf("%d",sum1);
}else{
printf("不是素数");
}
}
RT,不管输入什么结果都一样,求各位大神帮忙解答一下,谢谢 k要从2开始,任何数 % 1==0 BngThea 发表于 2017-10-31 13:01
k要从2开始,任何数 % 1==0
改了之后又出现了新问题:无法识别素数,不管输什么都打印相同的值,求赐教 人形UMP9 发表于 2017-10-31 13:20
改了之后又出现了新问题:无法识别素数,不管输什么都打印相同的值,求赐教
你最后的判断就是这样,如果是素数,将只是打印这个素数
请把最后的if/else改一下:
if(isprime==1)
{
printf("%d 是素数",sum1);
}
else
{
printf("%d 不是素数",sum1);
}
BngThea 发表于 2017-10-31 13:33
你最后的判断就是这样,如果是素数,将只是打印这个素数
请把最后的if/else改一下:
请问isprime应该在哪定义?我按这个输了以后显示isprime无定义 BngThea 发表于 2017-10-31 13:33
你最后的判断就是这样,如果是素数,将只是打印这个素数
请把最后的if/else改一下:
还有个问题我想请教下,如果在最外围给某个变量赋值后,在for循环内再给相同的变量赋值,那在循环外该变量的值会改变吗? 人形UMP9 发表于 2017-10-31 14:45
还有个问题我想请教下,如果在最外围给某个变量赋值后,在for循环内再给相同的变量赋值,那在循环外该变 ...
这是变量作用域的问题,如果在for循环内部有新的变量名字一样,那么会覆盖外面的那个,里面的一切操作就和外面那个无关了,等循环结束后,内部的这个变量就消失了,而外面的那个变量不会改变 人形UMP9 发表于 2017-10-31 14:42
请问isprime应该在哪定义?我按这个输了以后显示isprime无定义
我简单修改了一下代码,为了更好的交互
#include <stdio.h>
int main()
{
int sum1;
int K;
int isprime;
printf("请输入一个大于1的整数:");
scanf("%d",&sum1);//输入数字
for(K=2;K<sum1;K++)
{
if(sum1%K==0)
{
isprime=0;//判断是否为素数
break;
}
else
{
isprime=1;
}
}
if(isprime==1)
{
printf("%d 是素数",sum1);
}
else
{
printf("%d 不是素数",sum1);
}
getchar();//不用在意这句,因为是vs中会一闪而过,只是为了让屏幕停住
getchar();//不用在意这句,因为是vs中会一闪而过,只是为了让屏幕停住
return 0;
}
页:
[1]