C++上机题1质因数分解

写在前面:身为计算机专业学生,最近开始学习C++,深刻体会到自己编程能力的不足,从而在这里记录并分析自己上机题,以期望自己能都有所提升,同时也是记录自己的成长。

【问题描述】

编写一个程序,先读入一个正整数 N,对其做质因数分解。

例如:

90 = 2 * 3 * 3 * 5

【输入形式】

  • 输入一个正整数 N(2<=N<=65535)

【输出形式】

  • 分解得到的所有质因数,从小到大排列,以空格分隔,最后一个因数后无空格。

  • 如果N本身为质数,则输出N本身。

【样例输入1】

2

【样例输出1】

2

【样例输入1】

90

【样例输出1】

2 3 3 5

【样例输入1】

1024

【样例输出1】

2 2 2 2 2 2 2 2 2 2

———————————————————————————————————————————

1.首先,输出结果一定为质数,那么就需要一个用来判断质数的函数。

bool isprime(int n)
{int i;for(i=0;i

2.有一个点原来忽略了,那就是在做循环找因数时,肯定是用小到大的数,只需要一个一个地把找到的质因数输出即可,不用把质因数全都放入一个新的数组中再进行排序。

3.还有一点,当要分解的数字(a)得到一个质因数(i)时,要令a=a/i。

4.每一次令a=a/i后,要让i重新变为最小的质数2,以防止漏掉新的a的最小质因数,保证顺序是从小到大。

5.当出现不是质因数的i后,要i++,从而找更大的能满足条件的i。

整体代码如下:

#include
using namespace std;
bool isprime(int n)//用于判断是否为质数
{int i;for(i=2;i>a;while(isprime(a)){cout<


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章