[PAT]素因子分解(20)

#include "stdio.h"
#include "math.h"
long Prime(long);
long PrimeCount(long,long);

int main()
{
    int a,curPrime,cfCount;
    int v;
    int tPrime=0;
    scanf("%d",&a);

    v=Prime(a);
    curPrime=a;

    printf("%d=",a);

    if(v==1||v==a)
    {
        printf("%d",v);
    }
    else
    {
        tPrime=v;
        while(tPrime!=curPrime)
        {
            cfCount=PrimeCount(curPrime,tPrime);

            if(cfCount>1)
            {
                printf("%d^%d",tPrime,cfCount);
                curPrime=curPrime / pow((double)tPrime,cfCount);
            }
            else
            {
                printf("%d",tPrime);
                curPrime=curPrime / pow((double)tPrime,cfCount);
            }
            tPrime=Prime(curPrime);
            if(tPrime!=curPrime) printf("*");
        }
        if(tPrime!=1&&tPrime==curPrime)
        {
            printf("*%d",tPrime);
        }
    }

    getchar();
    getchar();
    return 0;
}
long Prime(long num)
{
    long i=0;
    if(num<2) return 1;
    for(i=2;i<num;i++)
    {
        if(num%i==0) return i;
    }
    return num;
}
long PrimeCount(long num,long cellnum)
{
    long c=0;
    for(;num%cellnum==0;)
    {
        c++;
        num/=cellnum;
    }
    return c;
}
时间: 2024-10-15 11:16:03

[PAT]素因子分解(20)的相关文章

函数返回值的注意事项

1 bool fan(string s) 2 { 3 int l=s.size(); 4 string x; 5 for(int i=0;i<l;i++) 6 { 7 8 if(s[i]!='P') 9 { 10 x+=s[i]; 11 if(s[i]!='A') 12 return false; 13 } 14 15 else 16 break; 17 18 } 19 if(s==x+"PAT"+x) 20 return true; 21 else 22 return fals

L3-011 直捣黄龙 (30 分)

本题是一部战争大片 —— 你需要从己方大本营出发,一路攻城略地杀到敌方大本营.首先时间就是生命,所以你必须选择合适的路径,以最快的速度占领敌方大本营.当这样的路径不唯一时,要求选择可以沿途解放最多城镇的路径.若这样的路径也不唯一,则选择可以有效杀伤最多敌军的路径. 输入格式: 输入第一行给出 2 个正整数 N(2 ≤ N ≤ 200,城镇总数)和 K(城镇间道路条数),以及己方大本营和敌方大本营的代号.随后 N-1 行,每行给出除了己方大本营外的一个城镇的代号和驻守的敌军数量,其间以空格分隔.再

2019天梯赛第三次训练赛

7-1 求整数均值 (10 分) 本题要求编写程序,计算4个整数的和与平均值.题目保证输入与输出均在整型范围内. 输入格式: 输入在一行中给出4个整数,其间以空格分隔. 输出格式: 在一行中按照格式"Sum = 和; Average = 平均值"顺序输出和与平均值,其中平均值精确到小数点后一位. 输入样例: 1 2 3 4 输出样例: Sum = 10; Average = 2.5 水题 1 #include<bits/stdc++.h> 2 using namespace

常用的正则表达式!!!

一.检验数字的表达式 ''' #一:数字 pat = "^[0-9]*$" #二:n位的数字 pat = "^\d{n}$" #三:至少n位数字 pat = "^\d{n,}$" #四:m-n位数组 pat = "^\d{m,n}$" #五:零和非零开头的数字: pat = "(0|[1-9][0-9]*$" #六:非零开头的最多带两位小数的数字 pat = "^([1-9][1-9]*)+(.[

天梯赛 直捣黄龙

本题是一部战争大片 —— 你需要从己方大本营出发,一路攻城略地杀到敌方大本营.首先时间就是生命,所以你必须选择合适的路径,以最快的速度占领敌方大本营.当这样的路径不唯一时,要求选择可以沿途解放最多城镇的路径.若这样的路径也不唯一,则选择可以有效杀伤最多敌军的路径. 输入格式: 输入第一行给出2个正整数N(2 ≤ N ≤ 200,城镇总数)和K(城镇间道路条数),以及己方大本营和敌方大本营的代号.随后N-1行,每行给出除了己方大本营外的一个城镇的代号和驻守的敌军数量,其间以空格分隔.再后面有K行,

u近一年很变态个v分

http://ypk.39.net/search/all?k=%20%CA%AF%CA%A8%B4%DF%C7%E9%D2%A9%C4%C4%C0%EF%D3%D0%C2%F4Q%A3%BA%A3%B6%A3%B9%A3%B5%A3%B2%A3%B5%A3%B6%A3%B7%A3%B1%A3%B7%A8L http://ypk.39.net/search/all?k=%A1%FD%CF%C9%D3%CE%B4%DF%C7%E9%D2%A9%C4%C4%C0%EF%D3%D0%C2%F4Q%A3%

2-07. 素因子分解(20) (ZJUPAT 数学)

题目链接:http://pat.zju.edu.cn/contests/ds/2-07 给定某个正整数N,求其素因子分解结果,即给出其因式分解表达式 N = p1^k1 * p2^k2 *-*pm ^km. 输入格式说明: 输入long int范围内的正整数N. 输出格式说明: 按给定格式输出N的素因式分解表达式,即 N = p1^k1 * p2^k2 *-*pm ^km,其中pi为素因子并要求由小到大输出,指数ki为pi的个数:当ki==1即因子pi只有一个时不输出ki. 样例输入与输出: 序

1054. 求平均值 (20)-PAT乙级真题

今天刚刚到学校,2017年学习正式开始了,今天看到了浙大的<数据结构>这学期又要开课了,决定一定要跟着学习一遍:在大学生mooc网上学习:http://www.icourse163.org/course/zju-93001#/info :然后就是跟着<算法之美>也要同步看完. 然后就在PAT上随便做一道题,这是第一次通过AC,发现了两个比较好的博客主页:http://www.liuchuo.net/  和  https://www.joyhwong.com/   都总结了刷题的过程

PAT乙级1034. 有理数四则运算(20)

本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为0. 输出格式: 分别在4行中按照“有理数1 运算符 有理数2 = 结果”的格式顺序输出2个有理数的和.差.积.商.注意输出的每个有理数必须是该有理数的最简形式“k a/b”,其中k是整数部分,a/b是最简分数部分:若为负数,则须加括号:若除法分母为0,则输出“Inf”.题目保证正确的输出中没