该程序只是在上一个生成随机长整数的基础上加上一个质数判断,但是运行时,当输入n=2时有时会导致系统崩溃蓝屏,估计是内存泄露,这方面还要加深学习
#include <iostream>
#include "stdafx.h"
#include <time.h>
using namespace std;
//计算2的a次方
int power(int a)
{
int powNum = 1;
for (int i = 0; i < a; i ++)
{
powNum = 2 * powNum;
}
return powNum;
}
int isPrime(long a)
{
if (a < 0)
return -1;
else if (a == 1 || a == 2)
{
return 1;
}
else if(a == 0)
{
return 0;
}
else
{
if ((a%2 == 0) || (a%3 == 0) || (a%5 == 0) || (a%7 == 0))
{
return 0;
}
else
return 1;
}
}
long createRndInteger(int n)
{
long tarNum = 0, minNum, maxNum = 1;
minNum = power(n - 1);
maxNum = power(n) - 1;
//生成n位最大数与最小数之间的随机质数
while(isPrime(tarNum) != 1)
{
srand( (unsigned)time( NULL ) );
tarNum = rand()%(maxNum - minNum + 1) + minNum;
}
return tarNum;
}
void main()
{
int n;
cout << "Input n:" << endl;
cin >> n;
cout << "The random prime number is " << createRndInteger(n) << endl;
}
随机生成一个n bit位的长质数
最新推荐文章于 2021-02-12 14:41:32 发布