题目描述
示例
- 输入:6, 10, 100
- 输出:60, 2520, 69720375229712477164533808935312303556800
解答
#include <iostream>
using namespace std;
/* ******************************************************************************
函 数 名 : multiplication
功能描述 : 记录输出倒序结果
输入参数 : num:输出倒序结果,length:数据长度,n:质数(或其x次方)因子
输出参数 : None
返 回 值 : None
****************************************************************************** */
int multiplication(int *num, int length, int n)
{
// 返回数据长度length;
long int c = 0; // 进位
int i;
// 对数据的length-1位进行相乘、进位
for (i = 0; i < length; i++) {
int m = num[i] * n + c;
c = m / 10;
num[i] = m % 10;
}
// 对数据的length及其以上位进行进位
while (c) {
num[i] = c % 10;
i++;
c = c / 10;
}
return i;
}
int main()
{
int N;
while (cin >> N) {
int prime[22]={ 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101 };
int num[100];
int length = 1;
num[0] = 1;
int m;
for (m = 64; N < m; m = m / 2) // 100以内,质数2的最大指数值
;
length = multiplication(num, length, m);
for (m = 81; N < m; m = m / 3) // 100以内,质数3的最大指数值
;
length = multiplication(num, length, m);
for (m = 25; N < m; m = m / 5) // 100以内,质数5的最大指数值
;
length = multiplication(num, length, m);
for (m = 49; N < m; m = m / 7) // 100以内,质数7的最大指数值
;
length = multiplication(num, length, m);
for (int i = 0; N > prime[i]; i++) {
length = multiplication(num, length, prime[i]); // 10以外的质数
}
for (int i = length - 1; i >= 0; i--) {
cout << num[i];
}
cout << endl;
}
return 0;
}