algorithm - 确定一个数是否为素数的平均情况(不是使用最优算法)
问题描述
我有以下函数来确定一个数字是否是素数。我知道最好的时间复杂度是 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 语言,但我关心问题的算法部分,因此我没有在标签中包含任何编程语言的名称。
解决方案
推荐阅读
- search - Splunk:提取表的值
- android - java.lang.ClassNotFoundException:没有找到类“io.reactivex.subjects.PublishSubject
- puppeteer - 无法检查“已安装扩展”页面是否已打开
- python-3.x - 通过 Glob 获取所有虚拟机的路径
- php - 在htaccess中动态获取域名
- python - 在范围内调用 asyncio Future
- ruby-on-rails - Rails 5.2 升级导致 ErrorController 失败并显示通用错误页面
- jquery - HTML2Canvas 不工作,需要控制台图像 url
- python - 如果工作表不存在,熊猫将工作表附加到工作簿,否则覆盖工作表
- node.js - 当我在猫鼬中删除包含嵌套子文档的文档时,如何自动删除嵌套子文档?