HDU's ACM 1164 Eddy's research I

来源:互联网 发布:华晨宇 知乎 编辑:程序博客网 时间:2024/06/02 06:01

原题链接:HDU's ACM 1164 Eddy's research I


分析:这是一道简答的语法题,理解题意,并模拟出来就好。


注意:可以先写个小程序,计算下在65535范围内的素数数量


AC Code:

<span style="font-family:Microsoft YaHei;font-size:14px;">#include <stdio.h>#include <string.h>#define PRIMENUM 6545int prime[PRIMENUM];   // 素数表int numOfPrime[PRIMENUM]; // 记录各个素数数目的数组void init(){int i, j, is;int index=0;for(i=2;i<MAXN;++i) {is = 1;for(j=2;j*j<=i;++j)if(i%j==0)is = 0;if(is)prime[index++] = i;}}int main(){int num, tmp;int i, j;init();while(scanf("%d", &num) == 1) {tmp = num;</span>
<span style="font-family:Microsoft YaHei;font-size:14px;"><span style="white-space:pre"></span>// PROCESSi=0;while(tmp!=1) {if(tmp%prime[i] == 0){tmp /= prime[i];numOfPrime[i]++;}elsei++;}</span>
<span style="font-family:Microsoft YaHei;font-size:14px;"><span style="white-space:pre"></span>// OUTPUTj=0;while(!numOfPrime[j])j++;printf("%d", prime[j]);numOfPrime[j]--;for(;j<PRIMENUM && prime[j]<=num;++j) {if(numOfPrime[j]){do {printf("*%d", prime[j]);} while(--numOfPrime[j]);}}printf("\n");}return 0;}</span>


0 0
原创粉丝点击