分解质因数

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int flag[100];
    int prime[100];
    memset(flag,true,sizeof(flag));
    memset(prime,0,sizeof(prime));
    for(int i=2;i<=50;i++)
    {
        if(flag[i])
        {
            for(int j=i<<1;j<=100;j+=i)
            {
                flag[j]=0;
            }
        }
    }//cout<<'e'<<endl;
    for(int i=2;i<100;i++)
        if(flag[i])
           // cout<<i<<endl;
        prime[i]=1;
    int n;
    cin>>n;
    int num[105];
    memset(num,0,sizeof(num));
    for(int i=2;i<=n;i++)
    {
        int t=i;
        while(t>1)
        {
            for(int j=2;j<=t;j++)
                if(prime[j])
                {
                    if(t%j==0)
                    {
                        t/=j;
                        num[j]++;
                    }
                }
        }
    }
    for(int i=2;i<=n;i++)
    {
        if(prime[i]) cout<<num[i]<<endl;
    }
    return 0;
}

 

posted @ 2016-03-12 15:13  超级学渣渣  阅读(348)  评论(0编辑  收藏  举报