质因子分解:
例如:6 = 3 * 2
8 = 2 * 2 * 2
#include<cstdio>
int main()
{
int n;
scanf("%d",&n);
for(int i=2;i<=n;i++)
{
if(n%i==0)
{
while(n%i==0)
{
printf("%d ",i);
n/=i;
}
i--;
}
}
return 0;
}
因为一个数的质因子只可能有一个大于这个数的平方根,这个质因子可以再最后特判:
#include<cstdio>
#include<math.h>
int main()
{
int n;
scanf("%d",&n);
for(int i=2;i*i<=n;i++)
{
if(n%i==0)
{
while(n%i==0)
{
printf("%d ",i);
n/=i;
}
i--;
}
}
if(n>1)
{
for(int i=sqrt(n)+1;i<=n;i++)
{
if(n%i==0) printf("%d ",i);
}
}
return 0;
}