藍橋杯 演算法訓練 素因子去重

2021-10-02 14:48:24 字數 720 閱讀 1234

今天做了一道比較簡單的題,但是思路很有意思(其實是被素因子這個概念卡了一會兒),所以就放了上來。

——————————————————————————————

資源限制

時間限制:1.0s 記憶體限制:256.0mb

問題描述

給定乙個正整數n,求乙個正整數p,滿足p僅包含n的所有素因子,且每個素因子的次數不大於1

輸入格式

乙個整數,表示n

輸出格式

輸出一行,包含乙個整數p。

樣例輸入

1000

樣例輸出

10資料規模和約定

n<=10^12

樣例解釋:n=1000=2^353,p=25=10*

——————————————————————————————

思路分析:這道題本質上就是一條找因子的題,如果我們太過受制於素因子這個概念,就很有可能難以求解,比方說花很多時間進行素數打表,但實際上我們利用乙個while迴圈就能解決這個問題。來看**:

#include

#include

// 包含sqrt()開方函式

intmain()

} ans *

= n;

// 這一行也很重要,因為最後若n不為1,就一定是乙個素數

printf

("%lld\n"

, ans);}

}

藍橋杯 演算法訓練 素因子去重

問題描述 給定乙個正整數n,求乙個正整數p,滿足p僅包含n的所有素因子,且每個素因子的次數不大於1 輸入格式 乙個整數,表示n 輸出格式 輸出一行,包含乙個整數p。樣例輸入 樣例輸出 資料規模和約定 n 10 12 樣例解釋 n 1000 2 3 5 3,p 2 5 10 題解 試除法.列舉素因子,...

藍橋杯 演算法訓練 素因子去重

問題描述 給定乙個正整數n,求乙個正整數p,滿足p僅包含n的所有素因子,且每個素因子的次數不大於1 輸入格式 乙個整數,表示n 輸出格式 輸出一行,包含乙個整數p。解題思路 1.先求出小於10的6次方的所有素數,因為n至多只存在乙個大於sqrt n 的素因數。2.然後在這些素數中找出n的因數。求素數...

藍橋杯備賽 演算法訓練 素因子去重

問題描述 給定乙個正整數n,求乙個正整數p,滿足p僅包含n的所有素因子,且每個素因子的次數不大於1 輸入格式 乙個整數,表示n 輸出格式 輸出一行,包含乙個整數p。樣例輸入 1000 樣例輸出 10資料規模和約定 n 10 12 樣例解釋 n 1000 2 3 5 3,p 2 5 10 原題目這裡有...