写了个求梅森素数的程序,输出不正确,求指教
#include<stdio.h>int expo = 2;int divisor = 2;int square = 0;unsigned long long MersennePrime = 3;//Mersenne prime number(2^p-1)unsigned long long MersennePrimePlus1 = 4;//Mersenne prime number plus 1 (2^p)int isPrime(unsigned long long number){ if(number ==2) { return 1; } divisor = 2; square = (divisor) * (divisor); while(square<=number) { if(number%divisor==0) { return 0;//Not prime, return false } divisor++; square = (divisor) * (divisor); } return 1;//else return true}void Mersenne(int a){ if(a>=0&&a<=10) { unsigned long long MersennePrime = 3; unsigned long long MersennePrimePlus1 = 4; printf("%d mers = ",a); expo = 2; while(a>0) { if(isPrime(MersennePrime)&&isPrime(expo)) { printf("%llu ",MersennePrime); a--; } MersennePrimePlus1 = MersennePrimePlus1 * 2; MersennePrime = MersennePrimePlus1 - 1; expo++; } printf("\n"); }else { printf("This program can only compute up to 10 Mersenne primes\n"); }}int main(){ Mersenne(10); getchar(); return 0;}