C语言素数的判断,带新手逐句分析

素数(prime)又称 质数。一个大于1的 自然数,除了1和它自身外,不能被其他自然数 整除的数叫做质数;否则称为 合数(规定1既不是质数也不是合数)。

闲话少叙,直接看完整代码


#include<stdio.h>
#include<math.h>
int main()
{
    int n = 0, i = 0;//初始化变量
    printf("please input number to judge\n");
    scanf("%d", &n);
    int q = sqrt(n);//sqrt是开平方函数
    if (n > 0)
    {
        for (i = 2; i <= q; i++)
        {
            if (n % i == 0)
            {
                break;
            }
        }
        if (i > q)//除数本身外最大因数不会超过它的开平方数
        {
            printf("%d is a prime number\n",n);//当n为素数时输出该语句
        }
        else
        {
            printf("%d is not a prime number\n",n);//当n不是素数时输出该语句
        }
    }
    else
        printf("error data");//当n为负数时提示输入数据错误
    return 0;
}

在刚接触编程做老师的复习题时自己看到完整的源代码也是云里雾里,接下来详细给大家介绍一下这种判断素数的思路。

由前面对于素数的介绍我们知道,素数就是除了1和它本身之外再没其他的因数,因此对于任意比2大的整数只要我们从2--n-1对它不断取余,判断2--n-1之间是否有他的因子,便能够判断它是否为素数了。

用C语言表示出来应该是


for (i = 2; i <= n-1; i++)

但朋友们肯定发现了文章开始的代码里使用的是开平方函数sqrt(n)作为判断条件,一个数除掉它自身外最大的因数便是它的开平方数,所以只需要判断2--sqrt(n)之间的数就可以了,好处就是这一判断方式可以减少一部分的计算量。

感谢各位的阅读,对于像我一样大学才第一次接触到编程的人来说开始是十分困难的,但不论什么原因既然自己已经选择了这条道路,就应该以绝对认真的态度去对待它,不要害怕尝试,不要害怕失败,网上冲完浪后多去敲敲代码,亲自动手实践。

我是励志成为编程老师的希望能给各位大学刚接触编程的同学带来一点点帮助。

如有问题,请多多斧正,感恩!✊

希望能和大家再评论区多多交流

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值