完全平方数

什么是完全平方数?

        一个正整数如果可以表示为某个整数的平方,则称这个正整数为完全平方数。换句话说,如果存在整数 n,使得 m = n2,那么 m 就是一个完全平方数。例如 1、4、9、16、25 等都是完全平方数,因为它们分别是 12,22,32,42,52的结果。

性质

        根据算术基本定理(也称为唯一分解定理),任意正整数 n 可以写成:

\(n = \prod_{i=1}^{k} p_i^{e_i}\) 或 \(n = p_1^{e_1} \cdot p_2^{e_2} \cdot \dots \cdot p_k^{e_k}\)

        其中 p1,p2,……,pk 是互不相同的质数,e1,e2,……,ek 是非负整数,利用算术基本定理,我们可以对完全平方数进行更深入的分析和解释。

完全平方数的质因数分解特性

        根据算术基本定理,假设 m = n2, n 的质因数分解为:

\(n = p_1^{a_1} \cdot p_2^{a_2} \cdot \cdots \cdot p_k^{a_k}\)

        那么 m 的质因数分解就是:

\(n^2 = (p_1^{a_1})^2 \cdot (p_2^{a_2})^2 \cdot \cdots \cdot (p_k^{a_k})^2 = p_1^{2a_1} \cdot p_2^{2a_2} \cdot \cdots \cdot p_k^{2a_k}\)

        从中可以看出,完全平方数的所有质因数的指数都是偶数。这是因为 m 中每个质因数的指数是 n 中对应指数的两倍。

那我们知道上面那些可以干嘛呢?

     (标题是完全平方数,我们是不是可以用来判断一个数是不是完全平方数)

        没错,我们可以用来判断一个数是不是完全平方数

假设我们有一个自然数m,那我们判断m是不是完全平方数的步骤为:

        1. 质因数分解:将 m 分解为质因数的幂次形式:

\(m = p_1^{e_1} \cdot p_2^{e_2} \cdot \cdots \cdot p_k^{e_k}\)

        2. 检查指数:检查所有质因数的指数 e1,e2,……,ek 是否均为偶数。

                如果所有指数均为偶数,则 m 是完全平方数。

                如果有任何一个指数是奇数,则 m 不是完全平方数。

题目        

完全平方数 – 蓝桥云课

        在这个题目中,我们已知一个 n 我们要找到最小的 x ,使得 n * x 为一个可得到且最小的完全平方数

思路

        假设 n * x 分解质因数的结果为:

\(n * x = p_1^{a_1} \cdot p_2^{a_2} \cdot \cdots \cdot p_k^{a_k}\)

        我们已知 n ,设 x = 1,对 n 分解质因数后只要 ai 出现次数为奇数次,我们就令 x 乘于这个 pi ,最后 x 就为每个出现次数为奇数次的 pi 的乘积。

ac代码

#include <iostream>
 
using namespace std;
 
typedef long long ll;
 
ll n;
ll x = 1;
 
int main()
{
    cin >> n;
    for (int i = 2; i <= n / i; i++)
    {
        if (n % i == 0)
        {
            int cnt = 0;
            while (n % i == 0)
            {
                cnt++;
                n /= i;
            }
 
            if (cnt & 1)
                x *= i;
        }
    }
 
    if (n > 1)
        x *= n;
 
    cout << x << endl;
 
    return 0;
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇