您的位置:首页 > 其它

NYOJ520 最大素因子

2014-02-27 17:09 399 查看
原题链接

很巧妙的一道题。我是没能想到这么巧的方法,唉,差距真不是那么一点点啊...

附原题标程:

#include<stdio.h>
#define N 1000010
int ans
={0},a;
void prime()
{
int i,j,x=0;
for( i=2; i<N; i++)
if( ans[i] == 0 )
{
x++;
for(j=i; j<N; j+=i)   //素数的整倍数的最大素因子可能是该素数
ans[j] = x;       //更新素数对应的出现的次序
}
}
main()
{
prime();
while( scanf ( "%d" , &a ) != EOF )
printf ( "%d\n", ans[a] );
}


我模仿着写的一个

#include <cstdio>
#define MAX 1000000 + 2
int a[MAX];

void Count(){
for(int i = 2, count = 0; i < MAX; ++i){
if(!a[i]){
++count;
for(int j = i; j < MAX; j += i)
a[j] = count;  //该素数的倍数的最大素因子可能是这个值,如果不是,以后可更新
}
}
}

int main(){
int n;
Count();
while(scanf("%d", &n) == 1)
printf("%d\n", a
);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: