Java 输入大小为n的isPrime算法的渐近运行时间

Java 输入大小为n的isPrime算法的渐近运行时间,java,algorithm,Java,Algorithm,我有一个iPrime函数,如下所示: public static boolean isPrime(int n) { if(n == 1) return false; for(int i = 2; i * i <= n; ++i) { if(n % i == 0) return false; } return true; } public静态布尔值isPrime(int n){ 如果(n==1)返回false; 对于(inti=2;i*i首先

我有一个iPrime函数,如下所示:

public static boolean isPrime(int n) {
    if(n == 1) return false;
    for(int i = 2; i * i <= n; ++i) {
        if(n % i == 0) return false;
    }
    return true;
}
public静态布尔值isPrime(int n){
如果(n==1)返回false;

对于(inti=2;i*i首先,我们可以看到算法在单个语句(if语句)上循环达
sqrt(n)
次。因此,它的运行时间与
n
值的平方根成正比

现在,问题是关于输入大小的运行时间,而不是输入值。输入大小是用于存储输入的存储量。在这种情况下,输入只是一个数字
n

一个数
n
,当以二进制表示时(当它以任何其他基表示时,此参数仍然有效),具有
logn
位,因此循环
sqrt(n)
次数是输入大小的指数,因为输入大小是
logn
sqrt(n)=exp(C*logn)
带有
C=0.5


因此,我们显示的算法是输入大小的指数。

Hi there@justhalf,虽然你写了一个全面的答案,但我很难理解。请你进一步详细说明一下……我的意思是拿n举例,然后解释:)