链接http://vjudge.net/problem/Aizu-NTL_1_A
题意
给一个数n,分解质因数.
先判断是否是素数,如果是直接输出。
如果不是,把2先单独列出来除,再从i=3开始,找质因数,i+=2;
#include<stdio.h>
#include<math.h>
const int maxn=100000;
int f[maxn];
using namespace std;
bool isprime(int n){
int t=sqrt(n+0.5)+1;
int i;
for(i=2;i<t;i++){
if(n%i==0)
break;
}
if(i==t) return true;
else return false;
}
int main(){
int n,top=0;
scanf("%d",&n);
int tmp=n;
printf("%d: ",n);
if(isprime(n)){
printf("%d\n",n);
return 0;
}
while(n%2==0){
f[top++]=2;
n/=2;
if(n&1)
break;
}
int i;
for(i=3;i<=n;i+=2){
while(n%i==0){
f[top++]=i;
n/=i;
}
if(n==1){
break;
}
}
for(i=0;i<top-1;i++)
printf("%d ",f[i]);
printf("%d\n",f[i]);
return 0;
}