在确定大数是否为质数时,如何使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;
}

有什么办法可以使此代码运行更快?我尝试了Eratosthenes的Sieve算法,但速度较慢,显然,这种“尝试将数字从2除以其平方根的方法”速度更快,但根据在线判断,速度不够快。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)