鱼C论坛

 找回密码
 立即注册
查看: 5659|回复: 7

[已解决]C语言判断素数的程序出了问题

[复制链接]
发表于 2017-10-31 12:50:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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,不管输入什么结果都一样,求各位大神帮忙解答一下,谢谢
最佳答案
2017-10-31 15:21:40
人形UMP9 发表于 2017-10-31 14:42
请问isprime应该在哪定义?我按这个输了以后显示isprime无定义

我简单修改了一下代码,为了更好的交互

  1. #include <stdio.h>

  2. int main()
  3. {
  4.         int sum1;
  5.         int K;
  6.         int isprime;

  7.         printf("请输入一个大于1的整数:");
  8.         scanf("%d",&sum1);//输入数字
  9.         for(K=2;K<sum1;K++)
  10.         {
  11.                 if(sum1%K==0)
  12.                 {
  13.                         isprime=0;//判断是否为素数
  14.                         break;
  15.                 }
  16.                 else
  17.                 {
  18.                         isprime=1;
  19.                 }
  20.         }
  21.         if(isprime==1)
  22.         {
  23.                 printf("%d 是素数",sum1);
  24.         }
  25.         else
  26.         {
  27.                 printf("%d 不是素数",sum1);
  28.         }

  29.         getchar();//不用在意这句,因为是vs中会一闪而过,只是为了让屏幕停住
  30.         getchar();//不用在意这句,因为是vs中会一闪而过,只是为了让屏幕停住

  31.         return 0;


  32. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-10-31 13:01:40 | 显示全部楼层
k要从2开始,任何数 % 1==0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-31 13:20:29 | 显示全部楼层
BngThea 发表于 2017-10-31 13:01
k要从2开始,任何数 % 1==0

改了之后又出现了新问题:无法识别素数,不管输什么都打印相同的值,求赐教
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

你最后的判断就是这样,如果是素数,将只是打印这个素数
请把最后的if/else改一下:
  1.         if(isprime==1)
  2.         {
  3.                 printf("%d 是素数",sum1);
  4.         }
  5.         else
  6.         {
  7.                 printf("%d 不是素数",sum1);
  8.         }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-31 14:42:45 | 显示全部楼层
BngThea 发表于 2017-10-31 13:33
你最后的判断就是这样,如果是素数,将只是打印这个素数
请把最后的if/else改一下:

请问isprime应该在哪定义?我按这个输了以后显示isprime无定义
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-31 14:45:02 | 显示全部楼层
BngThea 发表于 2017-10-31 13:33
你最后的判断就是这样,如果是素数,将只是打印这个素数
请把最后的if/else改一下:

还有个问题我想请教下,如果在最外围给某个变量赋值后,在for循环内再给相同的变量赋值,那在循环外该变量的值会改变吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

这是变量作用域的问题,如果在for循环内部有新的变量名字一样,那么会覆盖外面的那个,里面的一切操作就和外面那个无关了,等循环结束后,内部的这个变量就消失了,而外面的那个变量不会改变
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-31 15:21:40 | 显示全部楼层    本楼为最佳答案   
人形UMP9 发表于 2017-10-31 14:42
请问isprime应该在哪定义?我按这个输了以后显示isprime无定义

我简单修改了一下代码,为了更好的交互

  1. #include <stdio.h>

  2. int main()
  3. {
  4.         int sum1;
  5.         int K;
  6.         int isprime;

  7.         printf("请输入一个大于1的整数:");
  8.         scanf("%d",&sum1);//输入数字
  9.         for(K=2;K<sum1;K++)
  10.         {
  11.                 if(sum1%K==0)
  12.                 {
  13.                         isprime=0;//判断是否为素数
  14.                         break;
  15.                 }
  16.                 else
  17.                 {
  18.                         isprime=1;
  19.                 }
  20.         }
  21.         if(isprime==1)
  22.         {
  23.                 printf("%d 是素数",sum1);
  24.         }
  25.         else
  26.         {
  27.                 printf("%d 不是素数",sum1);
  28.         }

  29.         getchar();//不用在意这句,因为是vs中会一闪而过,只是为了让屏幕停住
  30.         getchar();//不用在意这句,因为是vs中会一闪而过,只是为了让屏幕停住

  31.         return 0;


  32. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-26 15:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表