【发布时间】:2022-01-29 14:26:34
【问题描述】:
bool prime (long long int n) {
bool prime = 1;
if (n == 1) {
return 0;
}
else {
for (long long int i = 2; i <= n/2 ; i++) {
if (n % i == 0) {
prime = 0;
break ;
}
}
return prime;
}
}
这是我检查n 是否为素数的函数。直到我尝试使用 12 位数字(例如 n = 999999999989)之前它都有效。
这是给problem on codeforces;当我提交此功能时,网站会打印“超出时间限制”。
【问题讨论】:
-
您只需要检查数字的平方根即可。 q.v. stackoverflow.com/a/1101217/4641116
-
bool prime = 1;?true和false过时了吗? -
@AlanBirtles 如果您的任务是检查单个数字的素数,那么筛子没有帮助。
-
@AlanBirtles 而是这个方向:en.m.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test
标签: c++ primes time-limiting