用C语言,输出前10个梅森素数

Python011

用C语言,输出前10个梅森素数,第1张

#include<stdio.h>

void main()

{

int i,x,flag,n

scanf("%d",&n)

for(x=3x<nx++)

{

flag=1

for(i=2i<x/2i++)

if(x%i==0)

{

flag=0

break

}

if(flag==1)

printf("%d\n",x)

}

}

#include <stdio.h>

#define true 1

#define false 0

long isprime(int n)

long mypow(int m, int n)

int main()

{

int n,a

for(n=2n<20n++)

{

a = mypow(2,n)+1

if(isprime(n)&&isprime(a))

{

printf("%d是梅森素数\n", a)

}

}

return 0

}

long mypow(int m, int n) {

long ans = 1

int i = 0

for (i <ni++) {

ans *= m

}

return ans

}

long isprime(int n) {

int x = 0

if (n <2) return false

if (n == 2|| n==3) {

return true

}

// 6x 6x+1 6x+2 6x+3 6x+4 6x+5

// 6x+2 =>2(3x+1)

// 6x+3 =>3(2x+1)

// 6x+4 =>2(3x+2)

if (n % 6 != 1 &&n % 6 != 5) {

return false

}

for (x = 5x * x <= nx += 6) {

if (n % x == 0 || n % (x+2) == 0) {

return false

}

}

return true

}

0分。。。自己调吧。

#include <stdio.h>

int IsPrime(unsigned int n){

unsigned int i

for(i=2i<ni++){//对大于1小于n的数进行循环

if(n%i == 0){//如果期间有能整除的数,直接返回0

return 0

}

}

return 1//返回1

}

int IsMPrime(unsigned int n){

if(IsPrime(n) ==0){//如果此数本身不是素数直接返回0

return 0

}

unsigned int p

unsigned int x

p=0

x=n+1

wihle(x !=1){//求出比x大且与x最近的2的p次方中的p

x=x>>1

p++

}

if(pow(2,p) != n+1){//如果此数+1不是2的p次方,则直接返回0

return 0

}

return IsPrime(p)//判断p是否为素数,返回判断值

}

int main(){

unsigned int m

scanf("%d”,&m)

if(m >1000){//为了防止输入的数太大导致机器死掉,限定输入的数小于1000。

return 0

}

for(m>0m--){//对大于0,小于输入数的整数挨个进行判断

if(IsMPrime(m) ==1){//如果是梅森素数直接打印

printf("%d,",m)

}

}

return 0//结束程序

}