且未

博客园 首页 新随笔 联系 订阅 管理

http://acm.hdu.edu.cn/showproblem.php?pid=1164

题意很简单,只是写代码的时候需要注意几个问题

一、筛选素数的时候记得用埃式筛选法,要是直接找可能会WA。

int prime(int n)
{
	int flag  = 0;
	for(int i=2;i<=sqrt(n);i++)
	{
		if(n%i==0){
			flag = 1;break;
		}
	}
	if(flag==1) return 0;
	else return 1;
} 
void solve()
{
	for(int i=2;i<=32555;i++)
	{
		if(prime(i)) a[t++]=i;
	}
}

二、下面是两种不同的输出*的方式,要注意的是,每次找到一个数之后,i 记得从0 开始

	/*	        if(n==a[i]) printf("%d\n",a[i]);
			else{
				if(n%a[i]==0)
				{
					printf("%d*",a[i]);
					n=n/a[i];
					i=-1;
				} 
			}*/
		
			if(n%a[i]==0) {
					if(flag==1) printf("*");
				printf("%d",a[i]);
				flag=1;
				n=n/a[i];
				i=-1;
			}

posted on 2018-03-23 17:03  阿聊  阅读(78)  评论(0编辑  收藏  举报