Description | ||
任意一个正整数可以分解成唯一的质因数的乘积,给出正整数,请计算出它的质因数分解式。 输入 每行一个正整数2<=n<=10^8。 输出 每行输出一个对应结果。使用”^”表示幂,”*”表示乘,质因子应该按从小到大的顺序输出,如果某一个质因子只有一次,那么就不要输出它的幂。 Sample Input 2 6 36 Sample Output 2 2*3 2^2*3^2 |
关于这道题,首先从2开始除,若2能除尽,直接结束。否则,逐步增大,这里可以采用for循环。
#include<stdio.h>
int main()
{
int n,i,j;//j用来表示指数
while(scanf("%d",&n)!=EOF)
{
for(i = 2;i*i <= n;i++)
{
if(n%i==0)
{
for(j = 0;n % i == 0;j++)
{
n = n / i;
}
if(j<2) printf("%d",i);
else printf("%d^%d",i,j);
if(n!=1) printf("*");
if(n==1)printf("\n");
}
}
if(n!=1)
printf("%d\n",n);
}
return 0;
}