【PAT 甲】1059 Prime Factors

Given any positive integer N, you are supposed to find all of its prime factors, and write them in the format N = p1​k1​×p2​k2​×⋯×pm​km​.

Input Specification:

Each input file contains one test case which gives a positive integer N in the range of long int.

Output Specification:

Factor N in the format N = p1​^k1​*p2​^k2​**pm​^km​, where pi​'s are prime factors of N in increasing order, and the exponent ki​ is the number of pi​ -- hence when there is only one pi​, ki​ is 1 and must NOT be printed out.

Note: in case N has no prime factor, simply print the only factor it has. 

Sample Input:

97532468

Sample Output:

97532468=2^2*11*17*101*1291

题目分析

质因子分解,即为将一个数分解为若干个素数乘积的形式。如:30=2*3*5,180=2^2*3^2*5

思路分析 

判断一个数是否为素数,找出素数表并保存在全局数组中;

创建结构体数组fac,记录质因子及其幂次;

分解整数n,如果n=1,无法分解,直接输出;

n不为1,遍历素数表,检查素数表当前素数是否可以被n整除,如果可以,则该素数即为质因子,然后计算该素数的幂次,即通过循环的方式用n不断除以该素数(n/=该素数),直到无法整除(n%该素数!=0),将幂次计入结构体数组fac中;

如果分解完之后n仍不为1,说明n本身就是一个素数,将n也添加到fac中.

一.求素数的两个方法

1.判断素数(一般方法)

1)isPrime()

bool isPrime(int n) {
    if (n <= 1) {
        return false; 
    }
    for (int i = 2; i * i <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dubhehug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值