判断一个数是否是素数IsPrime()

算法1

对整数n在[2,n-1],中做除法,如果出现能被整除的数,则n为合数,否则为素数。

#include<stdio.h>
int IsPrime(int n)

{
    int i;
    for (i = 2;i < n;i++)
    {
        if (n % i == 0)
            break;
    }
    if (i < n)
        return 0;
    else
        return 1;
}
int main(void)
{
    int n;
    printf("请输入一个大于3的整数:\n");
    scanf_s("%d", &n);
    if (IsPrime(n) == 1)
        printf("%d是素数\n", n);
    else
        printf("%d不是素数\n",n);
    return 0;
}

算法2

只需判断[2,\sqrt{n}]即可,从而减少循环次数(解释:假设n=xy,则一种情况是x,y中必有一个数小于\sqrt{n},而另一个大于,不可能同时小于\sqrt{n}或者同时大于\sqrt{n},第二种情况是x=y=\sqrt{n}。)只需添加math库和修改部分IsPrinme代码

#include<stdio.h>
#include<math.h>
int IsPrime(int n)

{
    int i;
    for (i = 2;i <=sqrt(n);i++)
    {
        if (n % i == 0)
            break;
    }
    if (i<=sqrt(n))
        return 0;
    else
        return 1;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值