C语言连续素数,特殊连续素数寻找

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#include

#define TRUE 1

#define FALSE 0

typedef int Bool;

typedef int Integer;/*便于需要时扩展成更大的整数类型*/

#define STRINT "%d"

Bool is_prime(Integer n);

Integer next_prime(Integer n);

Integer modpower(Integer p, Integer q);

/*

*作者:star

*时间:2010-01-19

*/

main(){

Integer n = 2, next;

for(;;){

next = next_prime(n);

if((modpower(n, next) - n) % next == 0){

printf(STRINT, n);

printf("\n");

printf(STRINT, next);

printf("\n");

}

n = next;

}

getch();

return 0;

}

/*素数判断,只能判别大于1的数*/

Bool is_prime(Integer n){

Integer i = 2;

while(i * i <= n){

if(n % i == 0){

return FALSE;

}

i++;

}

return TRUE;

}

/*求n后的第一个素数*/

Integer next_prime(Integer n){

Integer next;

next = (n % 2 == 0 ? n + 1 : n + 2);

for(;;next += 2){

if(is_prime(next) == TRUE){

break;

}

}

return next;

}

/*求p的P次方除以q的余数,默认p < q*/

Integer modpower(Integer p, Integer q){

Integer i, result = 1;

for(i = 0; i < p; i++){

result = (result * p) % q;

}

return result;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值