PAT L1 6 連續因子 暴力

2021-07-11 16:05:03 字數 955 閱讀 3699

時間限制

400 ms

記憶體限制

65536 kb

**長度限制

8000 b

判題程式

standard

作者 陳越

乙個正整數n的因子中可能存在若干連續的數字。例如630可以分解為3*5*6*7,其中5、6、7就是3個連續的數字。給定任一正整數n,要求編寫程式求出最長連續因子的個數,並輸出最小的連續因子序列。

輸入格式:

輸入在一行中給出乙個正整數n(131)。

輸出格式:

首先在第1行輸出最長連續因子的個數;然後在第2行中按「因子1*因子2*……*因子k」的格式輸出最小的連續因子序列,其中因子按遞增順序輸出,1不算在內。

輸入樣例:

630
輸出樣例:
3

5*6*7

暴力解決...

12!已經超int範圍了,所以連續因子最長不可能超過12。又因為要求最長的,所以從12開始暴力列舉長度。

連續因子中最大的一定不超過sqrt(n) + 1,因為要是再往後多乘乙個那麼就比n大了,又因為因子不包括1, 並且要求最小的連續因子序列,所以從2開始遍歷列舉。只要找到了那麼一定是所求的結果,此時退出即可。倘若沒找到,那麼就表示n為素數,此時只需輸出n本身即可。

參考部落格:

#include #include #include #include #include #include using namespace std;

int main()

if(n % sum == 0)

} if(flag) break;

} if(flag)

} else

return 0;

}

團體天梯 PAT L1 6 連續因子

乙個正整數 n 的因子中可能存在若干連續的數字。例如 630 可以分解為 3 5 6 7,其中 5 6 7 就是 3 個連續的數字。給定任一正整數 n,要求編寫程式求出最長連續因子的個數,並輸出最小的連續因子序列。輸入格式 輸入在一行中給出乙個正整數 n 1輸出格式 首先在第 1 行輸出最長連續因子...

PAT L1 6 最長連續因子

l1 6.最長連續因子 乙個正整數n的因子中可能存在若干連續的數字。例如 630 可以分解為3 5 6 7 其中5 6 7 就是 3 個連續的數字。給定任一正整數n,要求編寫程式求出最長連續因子的個數,並輸出最小的連續因子序列。輸入格式 輸入在一行中給出乙個正整數n 1 n 231 輸出格式 首先在...

pat L1 006 連續因子

直接搜尋因子。注意題幹要求因子的乘積不大於n。輸出最小的乘積的因子,即 如果沒有連續的因數,那麼輸出最小的那個因數。include include include include include include include using namespace std typedef long lon...