Sins of a Solar Empire P8

实验任务
正如你所知道的 s_sin 是一个贪玩的不得了的小 P 孩( 如果你非常讨厌他可以直接跳到
第二段),你也知道他最近很喜欢玩一个叫做太阳帝国的原罪的策略游戏我向你保证这是太
阳帝国原罪系列的第八章了。
sin_s 通过游戏学到一个数论知识: 任何一个大于 1 的自然数,都可以唯一分解成有限
个质数的乘积 , 这里 都是质数, 其诸指数 是正整
数。 例如:
sin_s 现在想求出上述定理 P1 P2 ...,Pn a1,a2,...an, 例如 1200 你需要求出 2^4*3*5^2
数据输入
1 行是正整数 N 1< N < =2^31 .
数据输出
输出一行代表数 N 的质数唯一分解( 质数按照升序的)。详细看样例
输入示例       输出示例

1200           2^4*3*5^2

5                                        5


 
            #include<stdio.h>

bool P(int n,int& i)
{
    if(n<2)
        return false;
    for (;i*i <= n;i++)
    {
        if(n % i == 0)
            return false;
    }
    return true;
}
int Times(int& x,int d){
    int i;
    for(i = 0;i*i<= x;i++)
    {
        if(x % d != 0)
        {
            return i;
        }
        x = x/d;
    }
}


int main()
{
    int times;
    int n;
    scanf("%d",&n);

    int i = 2;
    while(1 != n)
    {
        
            if(P(n,i))
            {
              printf("%d",n);
                break;
            }
            times = Times(n,i);
            if(times == 1)
            {
                printf("%d",i);
                i++;
                break;
            }
            else if(times == 0)
                ;
            else
            {
                
                printf("%d^%d",i,times);
                i++;
                break;
            }
    
        i++;
    }
    while(1 != n)
    {
    
            if(P(n,i))
            {
                
                printf("*%d",n);
                break;
            }
            times = Times(n,i);
            if(times == 1)
                printf("*%d",i);
            else if(times == 0)
                ;
            else
                
            printf("*%d^%d",i,times);

        i++;

    }
    
    return 0;
}

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值