问题描述
输入N行数据,分别输出这些数据(大于5)的最大的三个质数乘积
代码实现
#include<iostream>
using namespace std;
int main()
{
int N, n, num;
int i, j;
while (cin >> N&&N > 0)
{
for (n = 0; n < N; n++)
{
// 初始化质数的个数为0
int sum = 0;
cin >> num;
// 初始化乘积为1
int product = 1;
// 从最大的一个质数开始判断直至判断到1,并同时判断所取的数是否达到三个
for (i = num-1; i > 0 && sum < 3; i--)
{
// 判断每一个数是否是质数,1应该包括在内,判断2是质数
for (j = i - 1; j >=1; j--)
{ //防止被除数为1时,错误判断2不是质数
if (i%j == 0&&j!=1)
break;
//判断完毕后,符合条件的进行乘积
else if (j==1)
{
product *= i;
sum++;
}
}
}
cout << product<< endl;
}
if (n == N)
break;
}
return 0;
}