1007 素数对猜想 (20 分)

引入:

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

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

输入格式:

输入在一行给出正整数 N

输出格式:

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

输入样例:
20
输出样例:
4
分析:

题目要我们求素数对的个数。将除第一组素数对外的 相邻的且差为2的两个素数 视作一个素数对。特别地,第一组素数对为2和3,差为1。
给出一个输入样例为20,20以内的素数有2、3、5、7、11、13、17、19。
由此得到启示,我们用cnt记录素数对个数。对输入的n进行判断:
①如果n小于3,则cnt为0。
②如果n大于等于3,则将cnt初始化为1,代表第一组素数对,然后从5开始对于小于等于20的数进行遍历,为素数且 +2后得到的数 也为素数的记为一个素数对,cnt加1。
最后输出cnt。
注:第二个测试点对小于等于进行判定,记得是 i <= n

#include <iostream>
using namespace std;

bool isprime(int a){			//判断是否为素数
	for(int i = 2; i * i <= a; i++){
		if(a % i == 0)
			return false;
	}
		
	return true;
	
}

int main() {
	int n, cnt = 0;
	cin >> n;
	if(n >= 3)
    {   
        cnt = 1;
        for(int i = 7; i <= n; i++)
			if(isprime(i) && isprime(i - 2)) //判断i及i+2是否为素数,若都是,cnt加1
				cnt++;
    }
	cout << cnt;
	return 0;
}

悄咪咪表白柳婼大佬

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值