PTA 7-160 素因子分解
题目描述:
给定某个正整数 N,求其素因子分解结果,即给出其因式分解表达式 N = p1 k1 · p2k2 · · · pmkm 。
输入格式:
输入 long int 范围内的正整数 N。
输出格式:
按给定格式输出N的素因式分解表达式,即 N=p1^k1*p2^k2*…*pm^km
,其中pi
为素因子并要求由小到大输出,指数 ki
为 pi
的个数;当 ki
为1即因子 pi
只有一个时不输出 ki
。
输入样例:
1323
输出样例:
1323=3^3*7^2
代码如下:
#include <iostream>
#include <cstdio>
#define ll long long
using namespace std;
void divide(int n)
{
printf("%d=", n);
int flag = 0;
if (n >= 2){
for (ll i = 2; i <= n; i++){
int p = 0, k = 0;
while (n % i == 0)//除不尽的时候就i++
{
n /= i;
p = i;
k++;
}
if (p != 0){
if (flag == 1)
cout << "*";
cout << p;
flag = 1;
}
if (k >= 2){
cout << "^" << k;
}
}
}
else
cout << 1 << endl;
}
int main()
{
int n;
cin >> n;
divide(n);
return 0;
}