l1-006 連續因子
乙個正整數n的因子中可能存在若干連續的數字。例如630可以分解為356*7,其中5、6、7就是3個連續的數字。給定任一正整數n,要求編寫程式求出最長連續因子的個數,並輸出最小的連續因子序列。
輸入格式:
輸入在一行中給出乙個正整數n(1輸出格式:
首先在第1行輸出最長連續因子的個數;然後在第2行中按「因子1因子2……*因子k」的格式輸出最小的連續因子序列,其中因子按遞增順序輸出,1不算在內。
輸入樣例:
630輸出樣例:
3567
題目要求輸出最長的連續因子的個數以及把因子按遞增誰許輸出。解題思路是用暴力破解,主要用到for迴圈。
先估計連續因子最長的長度:題目已知n<2^31,大小介於12!和13!之間。【補充:12!=479 001 600;13!=6 227 020 800;2的31次方=2 147 483 648】(連續的數字相乘就會想到階乘)。所以最長長度是12。
假如n的最長連續因子為n=ab,那麼前提是a和b是連續的,並且ab所以for迴圈的內容就是,從start=2【因為連續因子不包括1】到start=sqrt(n),計算start*(start+1)(start+2)……,乘式長度是從len=12開始遞減的,乘式的結果ans需要判斷是否是n的約數,n%ans==0就代表求出結果了,輸出結果,結束。也有可能沒有找到,因為若n是質數,那麼最長連續因子個數是1是它本身,但是strart的範圍是2~sqrt(n),沒包括n,所以這種情況下,要把n輸出。
#include#includeint main()
} }printf("1\n%d", n);
return 0;
}
L1 006 連續因子
乙個正整數n的因子中可能存在若干連續的數字。例如630可以分解為3 5 6 7,其中5 6 7就是3個連續的數字。給定任一正整數n,要求編寫程式求出最長連續因子的個數,並輸出最小的連續因子序列。輸入格式 輸入在一行中給出乙個正整數n 131 輸出格式 首先在第1行輸出最長連續因子的個數 然後在第2行...
L1 006 連續因子
乙個正整數n的因子中可能存在若干連續的數字。例如630可以分解為3 5 6 7,其中5 6 7就是3個連續的數字。給定任一正整數n,要求編寫程式求出最長連續因子的個數,並輸出最小的連續因子序列。輸入格式 輸入在一行中給出乙個正整數n 131 輸出格式 首先在第1行輸出最長連續因子的個數 然後在第2行...
L1 006 連續因子
時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 乙個正整數n的因子中可能存在若干連續的數字。例如630可以分解為3 5 6 7,其中5 6 7就是3個連續的數字。給定任一正整數n,要求編寫程式求出最長連續因子的個數,並輸出最小的連...