判断素数(从暴力筛选,到线性筛选和优化)

本文介绍了判断素数的几种方法,包括一般遍历、埃氏筛选(未优化的线性筛选)、优化后的欧拉筛选以及区间筛选。重点讲述了线性筛选的原理和优化技巧,通过筛选素数及其倍数来高效地找出素数,并提供了源码分析和理解。
摘要由CSDN通过智能技术生成

【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;      //每次循环等于 sq
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值