鱼C论坛

 找回密码
 立即注册
查看: 3161|回复: 6

求助下各位大佬

[复制链接]
发表于 2021-11-2 20:13:07 | 显示全部楼层 |阅读模式

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

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

x

{
    int num;
    scanf("%d",&num);
    if(isPrime(num)==0)
    {
        printf("这不是素数");
    }
    else
    {
        printf("这是素数");
    }
}
isPrime(int num)

{
    int mid;
    mid=num/2;
    int i;
    for(i=2;i<num/2;i++)
    {
            if(num%i==0)
            {
                    return 0;
                }
               
                else
                {
                        return 1;
                }
        }
}
为什么我这个判断素数的程序,输入9也是显示它是素数
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-11-2 20:18:24 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2021-11-2 20:24 编辑
  1. isPrime(int num)
  2. {
  3.     int mid;
  4.     mid = num/2;
  5.     int i;
  6.     for(i = 2; i < num/2; i++)
  7.     {
  8.         if(num%i==0) return 0;
  9.         else return 1; // 你的代码 else 在 for() 里面,表示最多循环一次就结束,条件不是 if(num%i) == 0,就是 else
  10.     }
  11. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-2 20:21:51 | 显示全部楼层
本帖最后由 jackz007 于 2021-11-2 20:26 编辑
  1. isPrime(int num)
  2. {
  3.     int mid ;
  4.     mid = num / 2 ;
  5.     int i         ;
  6.     for(i = 2 ; i < num / 2 ; i ++) {
  7.             if(num % i == 0){
  8.                     return 0 ;  // 只要有一个 i 可以整除 num,num 就不是素数,这个判断是正确的。
  9.             } else {
  10.                     return 1 ;  // 只要有一个 i 不能整除 num,num 就是素数,这个判断是错误的。9 之所以被判定为素数,正是因为它不能被 2 整除!
  11.             }
  12.      }
  13. }
复制代码

      只有在确定 2 ~ num / 2 范围内所有的 i 都不能整除 num 才能确定 num 是素数。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-2 20:31:02 | 显示全部楼层
jackz007 发表于 2021-11-2 20:21
只有在确定 2 ~ num / 2 范围内所有的 i 都不能整除 num 才能确定 num 是素数。

那要怎么改呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-2 20:32:53 | 显示全部楼层
本帖最后由 jackz007 于 2021-11-2 20:36 编辑

  1. int isPrime(int num)
  2. {
  3.         int i , r = 0                 ;
  4.         if(num > 1) {
  5.                 for(r = 1 , i = 2 ; i * i <= num ; i ++) { // 循环前,r = 1,先假定 num 是素数
  6.                         if(num % i == 0) {
  7.                                 r = 0 ;                    // 否定 r = 1 的假定
  8.                                 break ;
  9.                         }
  10.                 }
  11.         }
  12.         return r                      ;
  13. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-3 11:22:50 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-3 11:23:29 | 显示全部楼层

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-25 03:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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