c题目5:判断输入的整数是不是质数

每日小语:

正视自己的疼痛吧。痛了就喊痛。人的尊严就从这里开始。——上野千鹤子

思考:

这是一道之前在python中写过的题,年代久远,今天老师又让写一遍,可惜的是上去的同学只有一个人可以稍微不出错误的完成所有代码,其他要么写不出,要么就是for循环忘记,要么for基本语法不当,种种问题。

我自己也写了,错漏百出。同学们很聪明,这反映了一种很高明的手法:“藏拙”。故意隐藏自己的真实水平。

我自己写的时候出现了老师讲的经典错误,printf里的东西放进了循环里,而这个东西是需要上节课刚讲的两个关键词来实现:continue,break。这俩个关键词的遗忘2让这个代码不能运行。

代码总是以一种很高效的方式解决问题,生活中的我却从来没有思考过如何真正的偷懒。我的勤奋毫无意义。我总得想出一些高于代码的东西,否则我就会被替代。老师说:我们没有被教育的价值。

 我觉得很对,对于我我一直不懂如何学习,日后可能也只能进工厂当一枚螺丝钉。但我也在努力摆脱。摆脱这一切。当然螺丝钉也蛮好,咋样活不算活呢,只是希望多聆听一些有启示的东西,当真正领悟到的那一刻,生命之花开满灵魂。

还想写很多,生活中的很多东西我都无法找到平衡,没有摸到规律,很可怕,但我也在努力,当找到某些东西,就是当我发现之前让我痛苦,让我坚持不下去的东西,突然有一天,以一种很平常的方式走进我的生活的时候,我意识到,找寻是必要的,但结果不能强求,它会顺其自然,融入到你的生活中,以一种意想不到的方式,突然,你就坚持下来了,突然,你就看懂了,突然,你就悟了。

目前想法十分浅陋,有待指正,希望观者客观看待。

代码:

目前是这样的,就是我找不到这个continue加在哪里,感觉加在哪里都怪怪的。。。

#include <stdio.h>

int isPrime(int num) {
    if (num <= 1) {
        return 0;   // 不是质数
    }
    
    for (int i = 2; i * i <= num; i++) {
        if (num % i == 0) {
            return 0;   // 不是质数
        }
    }
    
    return 1;   // 是质数
}

int main(void) {
    int num;
    
    printf("请输入一个整数:");
    scanf("%d", &num);
    
    if (isPrime(num)) {
        printf("%d 是质数\n", num);
    } else {
        printf("%d 不是质数\n", num);
    }
    
    return 0;
}

gpt今天又合适了,答案如上,看看我到底哪里出现了问题呢?

#include <stdio.h>

int main() {
    int num;
    printf("输入一个数:");
    scanf("%d", &num);

    // 判断是否为质数
    int isPrime = 1; // 假设为质数

    if (num <= 1) {
        isPrime = 0; // 负数或者0、1都不是质数
    } else {
        for (int i = 2; i * i <= num; i++) {
            if (num % i == 0) {
                isPrime = 0; // 能被除1和自身以外的数整除,则不是质数
                break;
            }
        }
    }

    if (isPrime == 1) {
        printf("%d 是质数\n", num);
    } else {
        printf("%d 不是质数\n", num);
    }

    return 0;
}

当一个程序运行时,它会按照从主函数开始的顺序逐行执行。所以,我们来逐行解释上述代码:

1. `#include <stdio.h>`:包含了标准输入输出函数的头文件。

2. `int main() { ... }`:这是程序的入口,定义了一个返回类型为 `int` 的 `main` 函数。

3. `int num;`:声明一个整数变量 `num`,用于存储用户输入的整数。

4. `printf("输入一个数:");`:打印提示信息,要求用户输入一个数。

5. `scanf("%d", &num);`:从用户输入中读取一个整数,并将其存储到变量 `num` 中。注意 `&` 符号是用来获取变量的地址。

6. `int isPrime = 1;`:定义一个名为 `isPrime` 的变量,并初始化为 `1`。用来表示当前的数是否是质数。

7. `if (num <= 1) { isPrime = 0; }`:如果输入的数小于等于 `1`,那么它不是质数,将 `isPrime` 设置为 `0`。

8. `for (int i = 2; i * i <= num; i++) { ... }`:循环从 `2` 开始逐个检查是否可以整除 `num`。循环条件是 `i` 的平方小于等于 `num`。步长为 `1`。

9. `if (num % i == 0) { isPrime = 0; break; }`:如果当前数 `num` 可以被循环变量 `i` 整除,说明 `num` 不是质数,并将 `isPrime` 设置为 `0`,然后跳出循环。

10. `if (isPrime == 1) { printf("%d 是质数\n", num); }`:如果 `isPrime` 的值仍然是 `1`,说明输入的数是质数,打印该提示信息。

11. `else { printf("%d 不是质数\n", num); }`:如果 `isPrime` 的值变为 `0`,说明输入的数不是质数,打印另一条提示信息。

12. `return 0;`:返回 `0`,表示程序正常结束。

通过以上的代码,我们创建了一个用于判断输入的整数是否为质数的程序。首先,通过 `scanf` 函数读取用户输入的整数,然后使用 `for` 循环逐个检查是否可以整除该数。如果找到一个可以整除的数,说明该数不是质数,将 `isPrime` 设置为 `0`,并退出循环。最后,根据 `isPrime` 的值输出相应的提示信息。

自己重新做一遍

#include <stdio.h>

int main() 
{
    int num;
    int IsPrime=0;
    printf("输入一个整数:");
    scanf("%d",&num);

    if (num<2)
    {
        printf("不是质数");
        return 0;
    }
    else
    {
        for(int i=2;i<num;i++)
        {
            if(num%i==0)
            {
                IsPrime=1;
                break;
            }
        }
        if(IsPrime=1)
        {
            printf("不是质数\n");
        }
        else
        {
            printf("是质数\n");
        }
    }
    return 0;
}
    

目前的代码我真的觉得无误了。可最后的结果总是那么痛心。。。

就问谁受得了,我真的受不了呜呜呜。。。

最后!!!这个问题竟然是一个小小的等号,最后的isPrime应该是==1,而不是=1.!!!!牢记。

再次思考

其实这道题的大部分已经掌握,目前有一个新思想 ,就是既然不能把printf(“是质数”)放入循环内,那么我们最后就需要把它放到循环外,而循环外我们有没有东西可以判断他是不是质数,这里IsPrime起到了桥梁的作用,通过判断它的赋值的变化情况,(简单的0,1)我们就可以十分方便的得到我们想要的结果,一般情况需要提前为他赋一个值,然后在循环中改变它的值即可。

我想这是这道题最重要的思想。

好啦,今天的文章到这里就结束啦,撒花花!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值