【GESP二级】费马定理暂无标签时间限制:CC++ 1000MS其他语言 2000MS内存限制:CC++ 16MB其他语言 32MB难度:中等出题人:描述公元1640年法国著名数学家费马发现:而3、5、17、257、65537都是质数于是费马猜想:对于一切自然数n+1都是质数可是到了1732年数学家欧拉发现一个数n并不满足费马的这个猜想请问欧拉发现的这个数n最小是多少? 在long long的范围
观察给出的例子,我们可以发现满足费马猜想的数n必须是一个素数。所以我们可以通过遍历自然数n并判断n+1是否为素数来找到满足条件的最小数。
具体实现如下:
#include <iostream>
using namespace std;
bool isPrime(int num) {
if (num <= 1) return false;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) return false;
}
return true;
}
int main() {
int n = 1;
while (true) {
if (isPrime(n + 1)) {
cout << n << endl;
break;
}
n++;
}
return 0;
}
时间复杂度分析: 对于每个n,我们需要判断n+1是否为素数,判断一个数是否为素数的时间复杂度为O(sqrt(n+1))。所以总的时间复杂度为O(n * sqrt(n))。
在给定的范围内,这个算法的时间复杂度是可以接受的
原文地址: https://www.cveoy.top/t/topic/iypr 著作权归作者所有。请勿转载和采集!