御坂利用质数只有1和它本身配对的特性,判断该数字可配对的组数,组数如果为1就是质数,反之为合数。
御坂从本人提交到学校题库的代码中,截取了主要部分:
int TotalNums,FindSta,i,j,n,Find,Num=1,Prime[10000];
void PrimeJudgment(int Input)
{
for(j=2;j<Input+1;j++) //从2开始取余
{
if(Input % j == 0) //取余结果为0即可整除,找到一组
{
FindSta++; //FindSta表示组数
}
}
if(FindSta == 1) //只有一组的话就是素数
{
Prime[TotalNums] = Input; //御坂把质数存入Prime数组中
TotalNums++; //数组位置自加,为下次存入做准备
}
else //不是的话御坂什么都不做
{
}
FindSta = 0; //组数清零
}
原程序功能为判断第n小的质数。
#include<cstdio>
#include<iostream>
using namespace std;
int TotalNums,FindSta,i,j,n,Find,Num=1,Prime[10000];
void PrimeJudgment(int Input)
{
for(j=2;j<Input+1;j++)
{
if(Input % j == 0)
{
FindSta++;
}
}
if(FindSta == 1)
{
Prime[TotalNums] = Input;
TotalNums++;
}
else
{
}
FindSta = 0;
}
int main()
{
cin>>n;
while(Find == 0)
{
Num++;
PrimeJudgment(Num);
if(TotalNums == n)
{
Find = 1;
}
}
cout<<Prime[TotalNums-1];
return 0;
}
|