问题描述:功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
详细描述:
函数接口说明:
public String getResult(long ulDataInput)
输入参数:
long ulDataInput:输入的正整数
返回值:
String
知识点: 排序
题目来源: 内部整理
练习阶段: 初级
运行时间限制: 10Sec
内存限制: 128MByte
输入:
输入一个long型整数
输出:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开
样例输入: 180
详细描述:
函数接口说明:
public String getResult(long ulDataInput)
输入参数:
long ulDataInput:输入的正整数
返回值:
String
知识点: 排序
题目来源: 内部整理
练习阶段: 初级
运行时间限制: 10Sec
内存限制: 128MByte
输入:
输入一个long型整数
输出:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开
样例输入: 180
样例输出: 2 2 3 3 5
问题分析:求一个整数(A)的质数因子,采用循环时,首先要判断除数是否为质数,是质数并且可以被A整除才是一个质数因子。
代码:
#include <iostream>
using namespace std;
bool isornot(int n);
int main()
{
int num;
cin>>num;
int i=2;
for(i=2;num!=1;++i)
{
if(isornot(i)&&(num%i==0))
{
cout<<i<<" ";
num=num/i;
i=1;
}
}
return 0;
}
bool isornot(int n)//质数检测
{
int count=0;
int i=1;
for(i=1;i<n/2+1;++i)
{
if(n%i==0)
++count;
}
if(count==1)
return true;
else
return false;
}