大きい-最小倍数
大きい数は最小の倍数Plus—1からnの各数字の最小の整数を求めます
後ろの数字が前の数字を割り切ればstep 1:公約数(前の数字は2つの数の間の公約数)が存在することを意味するので割り切ればよいが、数字は小さいものから大きいものまで並べられているので、後ろの公約数が前の数の倍数になる心配はない.arr【4】(4)はarr【2】を割り切ればよいのでarr【4】は2になる.arr【6】(6)arr【4】(2)とarr【3】を1にすることができ、スキャンした配列の数字が最小の公約数合集step 2:大数乗算
後ろの数字が前の数字を割り切ればstep 1:公約数(前の数字は2つの数の間の公約数)が存在することを意味するので割り切ればよいが、数字は小さいものから大きいものまで並べられているので、後ろの公約数が前の数の倍数になる心配はない.arr【4】(4)はarr【2】を割り切ればよいのでarr【4】は2になる.arr【6】(6)arr【4】(2)とarr【3】を1にすることができ、スキャンした配列の数字が最小の公約数合集step 2:大数乗算
int main()
{
int n;
while (scanf("%d", &n) != EOF) {
int arr[101];
int i, j;
int result[50] = {0};
result[0] = 1;
for (i = 1; i < 101; i++) {
arr[i] = i ;// ,
}
for (i = 1; i <= 101; i++) {
for (j = i + 1; j < 101; j++) {
if (j % i == 0) {
arr[j] = arr[j] / arr[i];
}
}
}
int ret = 0;
int temp;
int count = 1;
for (i = 1; i < n; i++) {
for (int j = 0; j < count; j++) {
temp = result[j] * arr[i] + ret;
result[j] = temp % 10;
ret = temp / 10;
}
while(ret) {
result[count] = ret % 10;
ret /= 10;
count++;
}
}
for (int i = count - 1; i >= 0; i--) {
printf("%d", result[i]);
}
printf("
");
}
return 0;
}