随笔 - 26  文章 - 0  评论 - 0  阅读 - 2547

1007 素数对猜想(C++)

一、问题描述:

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

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

输入格式:

输入在一行给出正整数N

输出格式:

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

二、设计思路:

  1. 输入整数,计数器count=0;
  2. 建立一个函数判断是否为素数,再建一个函数找出该数所有素数;
  3. 将相邻素数相减差为2,count加1;
  4. 输出count。

三、代码实现:

判断素数时要用根号,要不最后一个测试点过不了,会运行超时。

复制代码
 1 #include <iostream>
 2 #include <cmath>
 3 using namespace std;
 4 int Isprime(int m)//判断是否为素数
 5 {
 6     int flag = 1;
 7     for (int i = 2; i <= (int)sqrt(m); i++)
 8     {
 9         if (m % i == 0)
10             flag = 0;
11     }
12     return flag;
13 }
14 int findprime(int n, int a[])//找出所有素数,存入数组中
15 {
16     int j=0;
17     for (int i = 2; i <= n; i++)
18     {
19         if (Isprime(i))
20         {
21             a[j] = i;
22             j++;
23         }
24     }
25     return j;//返回素数个数
26 }
27 int main()
28 {
29     int n;
30     int count = 0;
31     int length;
32     int a[100000] = { 0 };
33     cin >> n;
34     length=findprime(n, a);
35     for (int i = 1; i <= length; i++)
36     {
37         if (a[i] - a[i - 1] == 2)
38         {
39             count++;
40         }
41     }
42     cout << count << endl;
43     return 0;
44 }
复制代码

 

posted on   轻挼草色  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示