您的位置:首页 > 其它

hdu 1164 Eddy's research I 素数筛选法

2011-07-20 10:21 441 查看
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>

int A[80000], dp[20000];

const int inf = 65535;

int prime( )
{
int i, j, k = 0;
A[1] = 1;
for( i = 2; i <= sqrt(inf); i++)
for ( j = 2 * i; j <= inf; j += i)
A[j] = 1;
for( i = 1; i <= inf; i++)
if(!A[i])
dp[k++] = i;
return k;
}

int main( )
{
int N, i, j, k, cnt;

k = prime( );
while(scanf("%d", &N) != EOF) {
if(N == 0)
continue;
cnt = 0;

for(i = 0; i < k; i++) {
while((N%dp[i]) == 0) {
if(cnt)
printf("*");
printf("%d",dp[i]);
cnt++;
N = N / dp[i];
if (N == 1)
break;
}
}
puts("");
}
return 0;
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: