我具有以下确定数字是否为质数的功能。我知道最好的时间复杂度是O((logN)^ 6),但是下面的算法要简单得多。我也知道它具有O(sqrt(N))的最坏情况,并且我正在尝试考虑它的平均情况复杂度。我需要答案的解释/证明。这是我的功能和测试它的基本程序:
#include <stdio.h>
#include <math.h>
int isprime(int N){
int j;
if(N==2){
return 1;
}
for(j=2;j<=ceil(sqrt(N));j++){
if(N%j==0){
return 0;//false, number is not prime
}
}
return 1;//true, number is prime
}
int main(){
int i;
for(i=2;i<100;i++){
printf("Number: %d \t %d\n",i,isprime(i));
}
return 0;
}
示例在C语言中,但是我关心问题的算法部分,因此我没有在标签中包含任何编程语言的名称。