1007 素数对猜想 (20 分)

387 阅读1分钟
  1. 对所有小于给定整数的素数看成是一个队列,如小于20的素数为【2,3,5,7,11,13,17,19】。
  2. 要求我们找出相邻的两个素数,他们差值为2,找出这样的素数的个数。
  3. 本题例子中的4对分别是【3,5】【5,7】【11,13】【17,19】
  4. 惭愧,python的代码比C++的还要长

C++代码

#include <iostream>
using namespace std;
int Prime(int n) {
	if (n < 2)
		return 0;
	for (int i = 2; i *i <= n; i++) {
		if (n%i == 0)
			return 0;
	}
	return 1;
}
int main() {
	int n;
	int count = 0;
	cin >> n;
	for (int i = 5; i <= n; i+=2) {
		if (Prime(i - 2) == 1 && Prime(i) == 1)
			count++;
	}
	cout << count << endl;
	return 0;
}

python3代码

import math
def Prime(n):
    if (n < 2):
        return 0
    count = int(math.sqrt(n))
    for i in range(2,count+1):
        if(n % i == 0):
            return 0
    return 1


def main():
    n = int(input())
    result = 0
    res = []
    for i in range(3,n + 1,2):
        if(Prime(i) == 1):
            res.append(i)

    for i in range(len(res)-1):
        if(res[i+1]-res[i]==2):
            result+=1

    print(result)

main()