赞
踩
将一个大于2的正整数分解为质因数的乘积。
一个大于2的正整数。
正整数=质因数*...*质因数
90
90=2*3*3*5
思路分析:一个合数总是可以有几个质数相乘得到,用循环从2开始一个一个遍历它的因子,
当得到一个因子(n%i==0时)后用n/=i的到新的n用while循环继续判断i是不是更新后n的因子,这样做是为了确保的得到的是质因子并且能够保证不漏掉因子,如果不用while循环而用if则更新i的值很繁琐,操作不当就会漏掉因子,,例如:180=4*3*3*5,当i=2时180%i==0,更新n=180/2,n==90,90%2==0,这样合数4就变成了2*2.
代码如下:
- #include<bits/stdc++.h>
- using namespace std;
- int main()
- {
- int n;
- cin>>n;
- cout<<n<<'=';
- for(int i=2;i<=n;i++)
- {
- while(n%i==0)//思路分析中的while就是指这里
- {
- n/=i;
- cout<<i;
- if(n!=1)//n==1时也就是i==n时即最后一个因子,不用在输出'*'
- cout<<'*';
- }
- }
- return 0;
- }
加油!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。