鱼C论坛

 找回密码
 立即注册
查看: 2828|回复: 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也是显示它是素数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-2 20:18:24 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2021-11-2 20:24 编辑
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; // 你的代码 else 在 for() 里面,表示最多循环一次就结束,条件不是 if(num%i) == 0,就是 else
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-2 20:21:51 | 显示全部楼层
本帖最后由 jackz007 于 2021-11-2 20:26 编辑
isPrime(int num)
{
    int mid ;
    mid = num / 2 ;
    int i         ;
    for(i = 2 ; i < num / 2 ; i ++) {
            if(num % i == 0){
                    return 0 ;  // 只要有一个 i 可以整除 num,num 就不是素数,这个判断是正确的。
            } else {
                    return 1 ;  // 只要有一个 i 不能整除 num,num 就是素数,这个判断是错误的。9 之所以被判定为素数,正是因为它不能被 2 整除!
            }
     }
}
      只有在确定 2 ~ num / 2 范围内所有的 i 都不能整除 num 才能确定 num 是素数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

那要怎么改呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

int isPrime(int num)
{
        int i , r = 0                 ;
        if(num > 1) {
                for(r = 1 , i = 2 ; i * i <= num ; i ++) { // 循环前,r = 1,先假定 num 是素数
                        if(num % i == 0) {
                                r = 0 ;                    // 否定 r = 1 的假定
                                break ;
                        } 
                }
        }
        return r                      ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-3 11:22:50 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢了爱你们哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-4 15:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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