按小到大顺序输出一个正整数的所有质数因子
2017-07-12 16:52
302 查看
牛客在线编程题:
输入描述:
输入一个long型整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。示例1
输入
180
输出
2 2 3 3 5
/*基本思想:从2开始依次判断每个数是否为正整数num的因子,并该数满足质数*/
#include <stdio.h> #include <math.h> #include <iostream> using namespace std; //判断数num是否为质数,是返回true,否则返回false bool isPrimeNum(long num){ if (num < 2){ return false; } int mid = static_cast<int>(sqrt(num)); if (num = 2){ return true; } for (int i = 3; i <= mid; i += 2) { if (num % i == 0){ return false; } } return true; } //依次输出ulDataInput数的所有质数因子,以空格间隔 void getResult(long ulDataInput){ if (ulDataInput < 2){ return; } long i = 2; while(ulDataInput != 1){ if (ulDataInput % i == 0 && isPrimeNum(i)){ cout << i << " "; ulDataInput /= i; i = 2; } else{ i++; } } } int main(){ long num; cin >> num; getResult(num); }
相关文章推荐
- C语言,输入一个正整数,按由大到小的顺序输出它的所有质数的因子(如180=5*3*3*2*2)
- 输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
- 输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
- 输入一个正整数,按照从小到大的顺序输出它的所有质数的因子
- 输入一个正整数,按照从小到大的顺序输出它的所有质数的因子
- 今天开始学Java 输入一个正整数,按照从小到大的顺序输出它的所有质数的因子
- 输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
- 输入正整数n,按从小到大的顺序输出所有形如abcde / fghij = n的表达式,其中a~j恰好为0~9的一个排列,2
- 输入正整数n,按从小到大的顺序输出所有形如abcde/fghij=n的表达式,其中a~j恰好为数字0~9的一个排列(可以有前导0),2<=n<=79
- 12.输入一个正整数,输出它所有的因子
- 求一个正整数的所有质数因子
- 201111621401-白乐乐-判断一个正整数是否为质数的算法。函数签名如下 int isPrime(long a) 输入:一个长整数a 输出:返回1(为质数),返回0(非质数)
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。
- 顺序输出从1到N位的所有数字(N可能是一个大数位)。
- [BUC-2.21]给出一个正整数,输出它所有可能的连续自然数(两个以上)之和的算式
- 从标准输入读入一个由字母构成的串(不大于30个字符)。从该串中取出3个不重复的字符,求所有的取法。取出的字符,要求按字母升序排列成一个串。不同的取法输出顺序可以不考虑。
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 100。
- 输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列
- 26.一个正整数如果恰好等于它的因子之和,这个数称为“完数”,如6=1+2+3,求1000以内所有的完数.
- 给定一个正整数n,则在n所有的分解式中,求因子乘积最大的一个分解及此乘积。