c - 在确定大数是否为质数时,如何使此 C 代码运行得更快?
问题描述
#include <stdio.h>
#include <math.h>
bool isPrime(long long int n) {
if(n <= 1) {
return false;
} else {
for(long long int i = 2; i <= sqrt(n); i++) {
if(n % i == 0) {
return false;
}
}
}
return true;
}
int main() {
int cases;
long long int num;
scanf("%d", &cases);
for(int i = 0; i < cases; i++) {
scanf("%lld", &num);
if(isPrime(num)) {
printf("YES\n");
} else {
printf("NO\n");
}
}
return 0;
}
有什么办法可以让这段代码运行得更快吗?我尝试了埃拉托色尼筛算法,但速度较慢,显然这种“尝试将一个数字从 2 除为其平方根”更快,但根据在线法官的说法还不够快。
解决方案
推荐阅读
- python - 如何将文本文件(或字符串到 QML 中的 textArea)从 python 发送到 QML 应用程序?
- spring - 如何在百里香中将一个html页面包含到另一个页面?
- typescript - TypeScript、Vue 和实验性装饰器
- powerbuilder - Powerbuilder - 如果值为 null,则 db 表上的帐户 ID 将更改为 0
- java - RxJava 2 Disposable 活动销毁
- java - 如何在线性时间内找到 2-sum?
- android - android.hardware.camera2 缩放实现
- python - 填写一列日期值,直到达到另一个日期值,然后继续填充新达到的值
- python - 无法导入不同 Python 版本的库
- javascript - 在javascript中隐藏另一个“div”后自动显示一个“div”