大きい-最小倍数


大きい数は最小の倍数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:大数乗算
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; }