C语言 几种求素数(质数)的方法及对比
素数的概念为:“一个大于1 的自然数,除了1和其自身外,不能被其它任何自然数整除的数” ——本文将对几种求素数的方法进行对比,最终给出一种效率较高的算法,当前仍然停留在使用简单的双重for循环计算素数的小伙伴值得一看
我们将题目规定为求3到500000范围之内所有的素数,统计其个数。(素数数量过多,不要求输出,判断其为素数后统计数目即可)
简单粗暴法
从3-500000范围内依次取出当前数i,遍历所有大于1小于i的数,如果没有数能够整除i,i即为素数。
实现代码如下
(goto语句为一种简单的跳转语句,可以将执行点跳转至指定的代码行,没有接触过的小伙伴可以自行百度了解更多)
#include "stdafx.h"
#include <time.h>
#include <math.h>
int _tmain(int argc, _TCHAR* argv[])
{
int i = 0,j = 0,num = 0;
int startTime = 0,endTime = 0; //用于计算程序执行时间
double sq = 0;
startTime = clock();
for(i=3;i<500000;++i){
for(j=2;j<i;j++){
if(i%j==0)
goto Flag1;
}
num++;
Flag1:;
}
endTime = clock();
printf(" 运行时间%d\n 素数个数%d\n\n",endTime -</