专栏文章

B3871 [GESP202309 五级] 因数分解 题解

题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mip19bwv
此快照首次捕获于
2025/12/03 04:31
3 个月前
此快照最后确认于
2025/12/03 04:31
3 个月前
查看原文

B3871 [GESP202309 五级] 因数分解 题解

这道题乍一看不难,其实也不难
这道题使用了因式分解。
直接上代码:
CPP
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
    ll n,f=0;//f代表本因数是否是最小的质因数,如果是,不用在前面加 * 
    cin>>n;
    for(ll i=2;i*i<=n;i++)//枚举数
    {
        if(n%i==0)//因数
        {
            if(f) cout<<" * ";//见上
            cout<<i;//输出该质因数
            f=1;
            ll z=0;//指数个数
            while(n%i==0)
            {
                n/=i;//每次都将所有一样的质因数除尽,保证下一次枚举到的因数都是质数
                z++;//指数增加
            }
            if(z>1) cout<<'^'<<z;//如果指数为1则不需次方
        }
    }
    if(n>1)//如果n大于1,说明并没有完全除尽,但这个数一定是质数,且指数为1
    {
        if(f) cout<<" * ";
        cout<<n;
    }
    return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...