646.等差素数列

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

2,3,5,7,11,13,… 是素数序列。 类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。

上边的数列公差为 30,长度为 6。

2004 年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。 这是数论领域一项惊人的成果!

有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:

长度为 10 的等差素数列,其公差最小值是多少?

运行限制

最大运行时间:1s
最大运行内存: 128M

#include <iostream>
using namespace std;

int f(int x) {
    
    
  for (int i = 2; i * i < x; ++i) {
    
    
    if (x % i == 0)
      return 0;
  }
  return 1;
}

int main()
{
    
    
  // 请在此输入您的代码
  int cnt = 1;
  for (int i = 2; i < 1000; ++i) {
    
    
    if (f(i)) {
    
    
      for (int d = 1; d < 1000; ++d) {
    
    
      	for (int k = 1; k < 1000; ++k) {
    
    
      		if (f(i + d * k)) cnt++;
      		else {
    
    
      			cnt = 1;
      			break;
			  }
			  if (cnt == 10) {
    
    
			  	cout << d;
			  } 
		  }
	  }
    }
  }
  return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_40713201/article/details/129384466