hdu 1164 Eddy's research I

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
",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;
			}

原文地址:https://www.cnblogs.com/qie-wei/p/10160221.html