首页 > 其他分享 >[pat乙]1007 素数对猜想

[pat乙]1007 素数对猜想

时间:2023-03-20 15:04:20浏览次数:51  
标签:dn pat 猜想 int 素数 bool 1007 return


1007 素数对猜想 (20 分)

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

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

输入格式:

每个测试输入包含1个测试用例,给出正整数N。

输出格式:

每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。

输入样例:

20

输出样例:

4

思路:

1.刚开始我写的时候是n^2循环并放入数组之后考虑,后来编译器出了问题,且一直是部分正确,于是我借鉴了一下其他博客的。
2.搜索对象从i——sqrt(n)——n/i降低时间复杂,加入bool函数拆分循环并取消string数组判断的步骤。
3.因为是素数对,所以判断对象直接由3到n-2。
4.因为素数不可能是偶数,所以直接n+=2.
5.只要过程中bool判断是一次素数,就直接交给下面判断对。

#include <iostream>
#include <math.h>
using namespace std;


bool isPrime(int n)
{
for (int i = 3; i <= n / i; i ++)
if (!(n%i))
return false;

return true;
}

int main()
{
int num, ans = 0;
cin >> num;

for (int i = 3; i <= num - 2; i+=2)
if (isPrime(i) && isPrime(i + 2))
ans++;

cout << ans;

return 0;
}


标签:dn,pat,猜想,int,素数,bool,1007,return
From: https://blog.51cto.com/u_16014765/6132931

相关文章

  • [pat乙]1021. 个位数统计
    1021.个位数统计(15)给定一个k位整数N=dk-110k-1+…+d1101+d0(0<=di<=9,i=0,…,k-1,dk-1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定N=1......
  • [pat乙]1022 D进制的A+B
    1022D进制的A+B(20分)输入两个非负10进制整数A和B(≤2​30​​−1),输出A+B的D(1<D≤10)进制数。输入格式:输入在一行中依次给出3个整数A、B和D。......
  • [pat乙]1023. 组个最小数
    1023.组个最小数(20)给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个......
  • [pat乙]1032 挖掘机技术哪家强
    1032挖掘机技术哪家强(20)(20分)为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。输入格式:输入在......
  • [pat乙]1013 数素数
    1013数素数(20分)算法标签:欧拉筛1013数素数(20分)令P​i​​表示第i个素数。现任给两个正整数M≤N≤10​4​​,请输出P​M​​到P​N​​的所有素数。......
  • [pat乙]1015 德才论
    1015德才论(25分)宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不......
  • [pat乙]1018.锤子剪刀布
    1018.锤子剪刀布大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势......
  • [pat乙]1016 部分A+B
    1016部分A+B(15分)正整数A的“D​A​​(为1位整数)部分”定义为由A中所有D​A​​组成的新整数P​A​​。例如:给定A=3862767,D​A​​=6,则A的“6部分”P​A......
  • [pat乙]1011 A+B 和 C
    1011A+B和C(15分)给定区间[−2​31,2​31​​]内的3个整数A、B和C,请判断A+B是否大于C。输入格式:输入第1行给出正整数T(≤10),是测试用例的个数......
  • [pat乙]1005 继续(3n+1)猜想
    1005继续(3n+1)猜想(25分)卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程......