時間限制
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輸出樣例:
35*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...