zoukankan      html  css  js  c++  java
  • PAT乙级1007.素数对猜想(20)

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


    分析:

    满足猜想的素数对:相邻且相差为2、两个都是素数;

    1、设第一个素数数为flag = 3; 

    2、找出下一个素数i,判断i - flag == 2;

    3、更新flag的值

    循环2、3步骤

    #include<iostream>
    #include<stdlib.h>
    using namespace std;
    bool isPrime(int x)
    {
        for (int i = 2; i * i <= x; i++)
        {
            if (x % i == 0)
                return false;
        }
        return true;
    }
    int main()
    {
        int num;
        cin >> num;
        int count = 0;//记录符合猜想的素数对的个数
        int flag = 3;//用于记录前一个素数
        for (int i = 5; i <= num; i += 2)
        {
            if (isPrime(i))
            {
                if (i - flag == 2)
                    count++;
                flag = i;
            }
        }
        cout << count << endl;
        system("pause");
        return 0;
    }
  • 相关阅读:
    Mysql数据查询
    Mysql数据类型
    desc和show
    Mysql权限管理
    深入理解inode和硬链接和软连接和挂载点
    Linux用户和组
    VIM文本编辑器
    Linux文件操作
    MySQL基础
    八大排序
  • 原文地址:https://www.cnblogs.com/denghui666/p/9454233.html
Copyright © 2011-2022 走看看