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