首页 > 解决方案 > 在确定大数是否为质数时,如何使此 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 除为其平方根”更快,但根据在线法官的说法还不够快。

标签: cperformanceprimes

解决方案


推荐阅读