人形UMP9 发表于 2017-10-31 12:50:20

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,不管输入什么结果都一样,求各位大神帮忙解答一下,谢谢

BngThea 发表于 2017-10-31 13:01:40

k要从2开始,任何数 % 1==0

人形UMP9 发表于 2017-10-31 13:20:29

BngThea 发表于 2017-10-31 13:01
k要从2开始,任何数 % 1==0

改了之后又出现了新问题:无法识别素数,不管输什么都打印相同的值,求赐教

BngThea 发表于 2017-10-31 13:33:00

人形UMP9 发表于 2017-10-31 13:20
改了之后又出现了新问题:无法识别素数,不管输什么都打印相同的值,求赐教

你最后的判断就是这样,如果是素数,将只是打印这个素数
请把最后的if/else改一下:
        if(isprime==1)
        {
                printf("%d 是素数",sum1);
        }
        else
        {
                printf("%d 不是素数",sum1);
        }

人形UMP9 发表于 2017-10-31 14:42:45

BngThea 发表于 2017-10-31 13:33
你最后的判断就是这样,如果是素数,将只是打印这个素数
请把最后的if/else改一下:

请问isprime应该在哪定义?我按这个输了以后显示isprime无定义

人形UMP9 发表于 2017-10-31 14:45:02

BngThea 发表于 2017-10-31 13:33
你最后的判断就是这样,如果是素数,将只是打印这个素数
请把最后的if/else改一下:

还有个问题我想请教下,如果在最外围给某个变量赋值后,在for循环内再给相同的变量赋值,那在循环外该变量的值会改变吗?

BngThea 发表于 2017-10-31 15:20:01

人形UMP9 发表于 2017-10-31 14:45
还有个问题我想请教下,如果在最外围给某个变量赋值后,在for循环内再给相同的变量赋值,那在循环外该变 ...

这是变量作用域的问题,如果在for循环内部有新的变量名字一样,那么会覆盖外面的那个,里面的一切操作就和外面那个无关了,等循环结束后,内部的这个变量就消失了,而外面的那个变量不会改变

BngThea 发表于 2017-10-31 15:21:40

人形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]
查看完整版本: C语言判断素数的程序出了问题