【C/C++】素数对猜想问题解法

本文介绍了一种解决素数对猜想的方法,即寻找相邻且差为2的素数对。通过判断素数、存储素数到数组,并枚举数组找到满足条件的素数对,例如在N=20的情况下,找到4对素数对。解题思路包括素数判断、数组存储和相邻素数差值检查。
摘要由CSDN通过智能技术生成

题目:素数对猜想
让我们定义 dn 为:dn = p{n+1} - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N (< 105),请计算不超过N的满足猜想的素数对的个数。
输入格式:每个测试输入包含1个测试用例,给出正整数N。
输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4

一、思考过程:
1.判断1到给定的数N中有多少个素数。
(1)得知道素数的判定方法。

素数,即质数。只能被它本身和1整除的数为素数
例如数字1,11只能被它本身和1整除,所以11是素数。
例如数字9,9除了能被它本身和1整除之外,还能被3整除,所以数字9不是素数。
在所有的素数中,最小的素数为2。

(2)求出给定数N范围内有多少个素数

例如:给定N = 20;
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
素数有2, 3, 5, 7, 11, 13, 17, 19

2.将素数存放到数组中。

array[MAX] = { 2, 3, 5, 7, 11, 13, 17, 19};

3.判断数组中相邻且差为2的素数对,记录有多少个。

从数组中可以得出:
5 - 3 = 2
7 - 5 = 2
13 - 11 = 2
19 - 17 = 2
所以可以得出素数对:
[3 , 5], [5 , 7], [11 , 13], [17 , 19]
4个素数对

二、解题方法
使用枚举法
项目包含一个头文件function.h和main.cpp
function.h包含两个函数:判断素数的函数isPrime(),执行操作的函数function()
main.cpp调用function.h中执行操作的函数function()

枚举过程:
通过数组一个一个的计算相邻素数对的差值为2的个数。
在function()函数中先调用isPrime(),判断给的数是否为素数,是素数就将它放入一个数组中,再进行array[i + 1] - array[i] == 2判断,最后记录个数即可。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值