1166-数字实力

描述

每一个数字都有自己的实力,我们可以从不同的角度来描述数字的实力。我们做出如下定义:一个数字n的实力是它所拥有的因数个数。例如:6的实力是4 ,因为它有4个因数(1236)。 现在我们需要知道从1开始到某一个数n中,哪个数字拥有最强的实力。

输入

一个正整数n ( 0< n < 500000)

输出

两个数字msm为从1n中具有最强实力且最小的数字。sm的实力。

样例输入

8

样例输出

6 4

#include<iostream>
using namespace std;
#define MAX 500000
int prime[MAX];
bool a[MAX];
int cnt;
void Initprime()//?????????
{
    int i, j;
    cnt = 0;
    for( i=2; i<MAX; i++ )
    {
        if( a[i] == 0 )
        {
            prime[cnt++] = i;
            for( j=2*i; j<MAX; j+=i )
                a[j] = 1;
        }
    }
}
int Div( int m )
{
    int tmp,ret=1;
    for( int i=0; prime[i]*prime[i]<=m ; i++ )
    {
        if( m % prime[i] == 0 )
        {
            tmp = 0;
            while( m % prime[i] == 0 )
            {
                tmp ++;
                m /= prime[i];
            }
            ret = ret * ( tmp+1 );
        }
    }
    if( m != 1 )
        ret = ret * 2;
    return ret;
}

int main( )
{
    int n,t;
    int max, ret;
    Initprime( );
        cin>>n;
        max=1;t=1;
        for( int i=1; i<=n; i++ )
        {
            ret=Div(i);
            if( ret > max )
            {
                max = ret;t=i;
            }
        }
        cout<<t<<" "<<max<<endl; 
    return 0;
} 

  

posted @ 2013-11-22 10:15  七年之后  阅读(1159)  评论(0编辑  收藏  举报