UVA 10791

来源:互联网 发布:宜人贷 知乎 编辑:程序博客网 时间:2024/05/16 04:50

【题目分析】
唯一分解定理


【代码】

#include <cstdio>#define ll long longint kase=0,n,tmp,flag;long long ans=0;int main(){    while (scanf("%d",&n)&&n)    {        if (n==1) {printf("Case %d: 2\n",++kase,ans);continue;}        ans=0;flag=0;        for (int i=2;(ll)i*i<=(ll)n&&n>1;++i)            if (n%i==0)            {                flag++;                tmp=1;                while (n%i==0)                {                    n/=i;                    tmp*=i;                }                ans+=tmp;            }        if (n>1) flag++,ans+=n;        if (flag==1) ans++;        printf("Case %d: %lld\n",++kase,ans);    }}
0 0
原创粉丝点击