1007 素数对猜想(C语言)

让我们定义dn​为:dn​=pn+1​−pn​,其中pi​是第i个素数。显然有d1​=1,且对于n>1有dn​是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。

现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的个数。

输入格式:

输入在一行给出正整数N

输出格式:

在一行中输出不超过N的满足猜想的素数对的个数。

输入样例:

20

输出样例:

4

代码长度限制

16 KB

时间限制

200 ms

内存限制

64 MB

此题一开始对于素数对的理解是一个关键点。由题目可知:“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。素数对是相差为2,所以d1=3-2并不是素数对,count应该从0开始计数。

#include<stdio.h>
#include<math.h>
int is_prime(int n) //是否为素数的验证
{
    if(n == 1) return 0;
    else 
    {
        for (int i = 2;i <= sqrt(n);i++)
            if (n % i == 0) return 0;
        return 1;
    }
}
int main()
{
    int n,count = 0;
    scanf("%d",&n);
    for(int i = 3;i < n-1;i++){
        if(is_prime(i) && is_prime(i+2)) count++;//素数对相差为2
    }
    printf("%d\n",count);
    return 0;
}

C语言编程提醒:由&&和||运算符组成的逻辑表达式中,为提高程序的执行效率,C语言规定:只对能够确定整个表达式值的最少子表达式进行计算。如A&&B,若A为0,则不计算B。如下例题:

 

 答案:B

 解析:这题很多人第一次碰到很容易想当然的选择A项,但是根据以上编程提醒可知,只要计算"&&"的左边部分就可以知道m=0,左边整个式子为0,那么整个式子为0,不需要计算右半部分了,所以n没变,还是等于1。

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阳的糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值