HzuMomoc


私信TA

用户名:932521665

访问量:35960

签 名:

记得在搬砖中多摸鱼!!!

等  级
排  名 90
经  验 9079
参赛次数 8
文章发表 68
年  龄 0
在职情况 在职
学  校 贺州学院
专  业

  自我简介:

解题思路:例子分析: 66%2==0  那么就输出2*   

                                66/2=33   33%2!=0  33%3==0  输出3*

                                33/3=11  显然11%11==0   此时 11/11=1 输出11,不输出*号

                              由此可知n=2时 不满足66相除2后的数33就自增1   n=3 以此类推



注意事项:n不满足两个条件才自增1:不是素数,x不能被n整除

参考代码:

#include<iostream>
using namespace std;
int ss(int x){//素数判断方法
	int i;
	if(x==1 || x==2 )
  	return x;
	for(i=2;i<x;i++){
		if(x%i==0)
	        return 0;
	}
	return x;
}
int main()
{
	int  x,n,k;
	while(scanf("%d",&x)!=EOF)
	{
		printf("%d=",x);
		n=2;
		while(x!=1)
		{
			if( x%n==0 &&ss(n))//满足n是素数就相除
			{
				x=x/n;//相除
				printf("%d",n);
				if(x!=1)//x不等于1输出*号
					printf("*");

			}//不满足自增1
			else
				n++;
		}
		printf("\n");
	}
	return 0;

}


 

0.0分

1 人评分

  评论区

0.0
2018-10-11 17:43:14
  • «
  • 1
  • »