因子分解
输入n(1 <= n <= 1e9):
616
输出:
616 = 2^3 * 7 * 11
(注意输出空格)
输出必须按2^3这样的格式输出
我编写了一个 虽然有点繁琐,但思路还算清晰。请指教指教
#include <stdio.h>
#include <math.h>
void main()
{
long int input,input1;
int m=0, k, l, i;
printf("Please input a number (1 ~ 10^9):");
scanf("%d", &input);
input1=input;
if(input%2!=0)
{
if(input==1)
{
m=0;
k=1;
l=1;
}
else
{
m=0;
for(i=3;i<=input;i++)
{
if(input%i==0)
{
k=i;
l=input/i;
break;
}
}
}
}
else
{
while(input%2==0)
{
input/=2;
m++;
}
if(input==1)
{
k=1;
l=1;
}
else
{
for(i=3;i<=input;i++)
{
if(input%i==0)
{
k=i;
l=input/i;
break;
}
}
}
}
printf("The output is:\n");
printf("%d = 2^%d * %d * %d\n", input1, m, k, l);
}