Foj 1075 分解素因子

来源:互联网 发布:淘宝助理上传宝贝 编辑:程序博客网 时间:2024/05/17 04:48

题目链接:http://acm.fzu.edu.cn/problem.php?pid=1075
思路:分解素因子

#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int maxn=65535+5;typedef long long LL;bool prime[maxn];int p[maxn/10];int k;void isprime(){    k=0;    LL i,j;    memset(prime, true, sizeof(prime));    for(i=2; i<maxn; i++)    {        if(prime[i])        {            p[k++]=i;            for(j=i*i; j<maxn; j+=i)            {                prime[j]=false;            }        }    }}int num[1000];int fac[maxn];int cnt;void fenjie(int m){    memset(num, 0, sizeof(num));    cnt=0;    for(int i=0; p[i]*p[i]<=m&&i<k; i++)    {        if(m%p[i]==0)        {            fac[cnt]=p[i];            while(m%p[i]==0)            {                num[cnt]++;                m/=p[i];            }            cnt++;        }    }    if(m>1)    {        fac[cnt]=m;        num[cnt++]=1;    }}int main(){    int t;    isprime();    scanf("%d",&t);    while(t--)    {        int m;        scanf("%d",&m);        fenjie(m);        //cout<<"cnt="<<cnt<<endl;        for(int i=0; i<cnt-1; i++)        {           for(int j=0; j<num[i]; j++)           {            cout<<fac[i]<<"*";           }        }       for(int i=0; i<num[cnt-1]-1; i++)       cout<<fac[cnt-1]<<"*";       cout<<fac[cnt-1]<<endl;    }    return 0;}
0 0
原创粉丝点击