求下一个质数

#include <stdio.h>

#include <stdbool.h>

#include <math.h>


int main ( int argc ,const char* argv[])

{

    bool is_prime;

    int start_number,next_number,i,last;

    

    start_number = 8;

    

    if( 1 == start_number ){       //如果前数为1,则后数为2

        next_number=2;}

   

    else {

        if( 2 == start_number)    //如果前数为2,则后数为3

        {next_number=3;}

        

        else

        {

            next_number = start_number;   //质数只存在于奇数中

            if(next_number%2 == 0 )

                next_number--;           //假如前数为偶数,减一变奇数

            

            do

        {

            is_prime=true;      //判断是否已产生下一个质数

            next_number += 2;   //保证下一个测试的数字为奇数

            last=sqrt(next_number);  // 质数只等于1乘以本身,假设存在一个乘数,必定是小于数的的平方根的乘数存在

            

            for(i = 3;i <= last&&is_prime;i+=2) //如果该数不是质数,则跳出循环,到while

            {

                if(next_number%i == 0// 如果存在大于1的乘数,,小于平方根的乘数,证明该数不是质数。

                    is_prime=false;

    }

        } while(!is_prime);   //如果不是质数,则is_prime为0,则while为1,继续回到循环中。

    

       

    }

 printf("在 %d 后面的质就是 %d !\n",start_number,next_number);

}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值