鱼C论坛

 找回密码
 立即注册
查看: 129|回复: 4

[已解决]为什么我输入什么数字都给我显示是素数啊

[复制链接]
发表于 2025-8-6 17:47:05 | 显示全部楼层 |阅读模式

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

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

x
  1. #include <stdio.h>

  2. int main()
  3. {
  4. int ii, num;
  5. _Bool flag = 1;

  6. printf("请输入一个数字:");
  7. scanf("%d", &num);

  8. for (ii = 2; ii < num / 2; ii++)
  9. {
  10.         if (num % i == 0)
  11.         {
  12.                 flag = 0;
  13.         }
  14. }

  15. if (flag)
  16. {
  17.         printf("%d是一个素数!\n", num);
  18. }
  19. else
  20. {
  21.         printf("%d不是一个素数!\n", num);
  22. }
  23. }
  24. return 0;
复制代码


在vs2022上运行,跟着视频敲的代码实在不知道哪里出了问题,有没有大佬帮我看一下啊
最佳答案
2025-8-6 17:49:06
13行  少了一个i
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-8-6 17:48:03 | 显示全部楼层
你的代码有几个问题导致判断素数出错:

1. 头文件缺少 stdio.h
2. 循环变量名不一致(for用 ii,判断用 i
3. 循环条件应为 ii <= num/2
4. return 0; 位置错误(放在函数外)
5. 缺少对数字1的处理

修正后的代码:


  1. #include <stdio.h>  // 添加头文件

  2. int main()
  3. {
  4.     int ii, num;
  5.     _Bool flag = 1;

  6.     printf("请输入一个数字:");
  7.     scanf("%d", &num);

  8.     // 处理数字1的特殊情况
  9.     if(num == 1) {
  10.         flag = 0;
  11.     }
  12.     else {
  13.         // 修正循环条件和变量名
  14.         for(ii = 2; ii <= num/2; ii++) {
  15.             if(num % ii == 0) {  // 变量名改为ii
  16.                 flag = 0;
  17.                 break;  // 发现因子可提前结束
  18.             }
  19.         }
  20.     }

  21.     if(flag) {
  22.         printf("%d是一个素数!\n", num);
  23.     }
  24.     else {
  25.         printf("%d不是一个素数!\n", num);
  26.     }
  27.    
  28.     return 0;  // 位置修正到函数内
  29. }
复制代码


主要修改点:
1. 添加 #include <stdio.h>
2. 循环变量统一使用 ii
3. 循环条件改为 ii <= num/2
4. 增加对数字1的处理
5. 添加 break 提高效率
6. 调整 return 0; 位置

这样修改后程序就能正确判断素数了。测试时可以用2(最小素数)、4(合数)、1(非素数)等数字验证。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-8-6 17:49:06 | 显示全部楼层    本楼为最佳答案   
13行  少了一个i
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-8-6 18:00:40 | 显示全部楼层

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

使用道具 举报

发表于 2025-8-7 08:54:22 | 显示全部楼层
为什么要搞两个i,一个i就不会容易出现漏掉情况
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-20 06:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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