zoukankan      html  css  js  c++  java
  • [PAT乙级] Practise 1007 素数对猜想

    PAT (Basic Level) Practice (中文)1007

    1007 素数对猜想

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

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

    输入格式:

    输入在一行给出正整数N

    输出格式:

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

    输入样例:

    20
    

    输出样例:

    4
    

    思路:

    创建一个判断是否是素数的函数,当一个数n从2~根号n都不能被整除时即为素数(因为如果它不是质数,那么它一定可以表示成两个数(除了1和它本身)相乘,这两个数必然有一个小于等于它的平方根。只要找到小于或等于的那个就行了)。

    遍历5~N,如果当前值-2和当前值都为素数时,即为1个素数对。

    代码:

    #include <iostream>
    #include <math.h>
    using namespace std;
    
    bool Pn(int k) {
    	for (int i = 2; i*i <=k; i++) 
    		if (k % i == 0) 
    			return false;
    	return true;
    }
    
    int main() {
    	int n;
    	cin >> n;
    	int mae = 0;
    	for (int i = 5; i <= n; i++) 
    		if (Pn(i) && Pn(i-2)) 
    			mae++;
    	cout << mae;
    	return 0;
    }
    
  • 相关阅读:
    SpringMVC
    SpringMVC
    SpringMVC
    Spring
    Spring
    值类型和引用类型
    判断字符串的开头和结尾
    二分法(课后)
    验证码
    从1-36中随机出6个不相等的数
  • 原文地址:https://www.cnblogs.com/eisuto/p/12422945.html
Copyright © 2011-2022 走看看