思路1:首先先提一个这样的思路-----假如这个数是90,我们让它被2到90之间的数进行整除,如90/2=45——0(余数),90/3=30......我们获取这样的除数。但是有问题,90每次都要去变回原来的值,而且还会产生重复的3,就这两点而言,就让人不知所措。那么看看下面这个思路。学语言最重要的是思想!
思路2:
初值n 除数i(参考下面代码)
90 / 2 =45
45 /3=15
15/3=5
5/5=1
对!就是让每次得到的值赋给初值让它再去除2-------初值之间的数据,这样这个for循环清晰明了。
本程序i=i-1的设置恰恰为了让每次得到的值赋给初值让它再去除2-------初值之间的数据来得到质因数。这个“*”也是个问题,得到一个质因数就打印出一个“*”。其实你会发现只要初值不为1,去打印“*”,就可以满足例子中的90=2*3*3*5的效果了。
好了,到这里结束了,感谢阅读!请各位提出宝贵的建议!
int main()
{
int n = 0;
int i = 0;
printf("输入需要分解的整数:");
scanf("%d", &n);
for (i = 2; i <= n; i++)
{
if (n % i == 0)
{
printf("%d", i);
n = n / i;
if(n!=1)
printf("*");
/*n = n / i;*/
i = i-1;//最妙的地方
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)