【Prime Number】
素数定义:素数就是质数,指出了“1”和他本身,没有其他因数的数字,
0,1不是素数,第一个素数是2,依次是2,3,5,7,11……
以搜索1000以内的素数为例,判断出来的素数存放于一维数组中。
1、一般遍历(双重循环)
采用双重循环,表层循环游标 J 负责遍历2-1000,内层游标K的范围是[2,根号J],在内层游标遍历的过程中,如果
表层循环游标J如果能整除K,则说明J代表的数字不是素数,当K遍历完[2,根号J],仍没找到因数,说明J是个素数。存入数组。
#include <math.h>
#include <stdio.h>
#define Max 1000 //Max = 1e3 =1 * 10的3次方,即一千
int sushu[Max]={0},count=1; //保存素数在数组中,count计数素数个数
void prime();
int main(){
prime();
int i;
for(i=1; i<Max; i++){
if(sushu[i] == 0){
break;
}
printf("%3d ",sushu[i]);
if(i%10 == 0){
printf("\n");
}
}
return 0;
}
void prime(){
int total; //每次循环等于 sqrt(j),取[ 2,sqrt(j) )区间判断素数
int j,k;
for(j=2; j<Max; j++){
total=sqrt(j);
for(k=2; k<=total; k++){
if(j%k == 0){
break;

本文介绍了判断素数的几种方法,包括一般遍历、埃氏筛选(未优化的线性筛选)、优化后的欧拉筛选以及区间筛选。重点讲述了线性筛选的原理和优化技巧,通过筛选素数及其倍数来高效地找出素数,并提供了源码分析和理解。
最低0.47元/天 解锁文章
1177

被折叠的 条评论
为什么被折叠?



