编写一个快速质数(素数)计算程序,使用的是平方根法。
原理:如果一个数不是素数是合数, 那么一定可以由两个自然数相乘得到, 其中一个大于或等于它的平方根,一个小于或等于它的平方根,并且成对出现。
所以计算一个数是否可以被整除,只需要计算到其平方根即可。
代码如下:
#include <stdio.h>
#define N 10000000000000 //定义最大范围
#define Num_line 8 //每行显示的素数个数
#define Disp_mun 200 //计算多少后统计已计算的素数个数
#define Jishu 10000 //计算多是数据后停止
void sushu_2(long x);//根号法素数
char issushu(long n);//判断是不是素数
int main(void) {
sushu_2(3);
return 0;
}
void sushu_2(long numb){
int a,i=0,l;
while (numb<=N){
if (numb&0x0001){ //将偶数筛除
if (issushu(numb)){
printf("%10ld;\t",numb);
i++;
if (i%Num_line==0) printf("\n");
if (i%Disp_mun==0) printf("-------已计算出%5d 个素数-------\n",i);
if (i==Jishu) return;
}
}