质因数分解

时间:2019-03-27
本文章向大家介绍质因数分解,主要包括质因数分解使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#include<stdio.h>
#include<math.h>
#define N 70000
#define max 65535
typedef long long ll;
const int maxn=7000;
int a[maxn],b[N];
int antiprime[max]={1,1};
int isprime(int n) {
    for(int i=2;i<=sqrt(n);i++) {
        if(n%i==0) return 1;
    }
    return 0;
}
int main()
{
    for(int i=2,k=0;i<max;i++) {
        if(antiprime[i]==0) a[k++]=i;
        for(int j=0;j<k&&i*a[j]<max;j++) {
            antiprime[i*a[j]]=1;
            if((i%a[j])==0) break;
        }
    }
    int n;
    while(~scanf("%d",&n)) {
        if(isprime(n)==0) printf("1 %d\n",n);
        else {
            int i,j;
            i=j=0;
            while(n!=1) {
                while(n%a[i]==0&&n!=1) {
                    b[j++]=a[i];
                    n/=a[i];
                }
                i++;
            }
            for(i=0;i<j-1;i++) 
            printf("%d ",b[i]);
            printf("%d\n",b[j-1]);
        }
    }
    return 0;
}//质因数分解