怎样用C++编写将一个整数分解质因数的程序?

如题所述

//貌似楼上几位都忘了重复测试i能否整除目标整数?

#include <iostream>
using namespace std;
void main()
{
long N,N2,i,t,count;
cout<<"<因式分解>"<<endl;
cout<<"本程序中N和1不视作N的因子。"<<endl;
while(1){
cout<<"请输入一个正整数N:";
cin>>N; N2=N;
count=0; t=N/2; //大于N/2的数不能成为N的因子。(本程序中N本身不算N的一个因子)
for(i=2;i<=t;i++){
if(N%i==0){
if (++count==1) cout<<"N="<<N<<"=";
cout<<i; N/=i;
if(N!=1) cout<<"×";
i--; //再次测试i是否还能成为N的因子
}
if(N==1) break;
}
if(count==0) cout<<N2<<"是质数。"<<endl;
cout<<endl<<endl;
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-04-21
#include <iostream.h>
#include <math.h>

//试用除法判断一个数是否为素数
bool Isprime(int n)
{
for(int i=2;i<=sqrt(n);i++)
//如果能被一个数整除则不是素数
if(n%i==0)
return false;
//不能被2--n之内的任一个数整除,判定为素数
return true;
}

void Factor(int n)
{
int i;
if(Isprime(n))
cout<<n<<' ';
else
{
for(i=2;i<sqrt(n);i++)
if(n%i==0)
break;
Factor(i);
Factor(n/i);
}
}

void main()
{
int n;
cout<<"请输入一个数:";
cin>>n;
cout<<"因子分解:";
Factor(n);
cout<<endl;
}
第2个回答  推荐于2016-01-14
http://zhidao.baidu.com/question/12385917.html?si=1

#include <stdio.h>
int main()
{
int n,i;
printf("\n Please input a number\n");
scanf("%d",&n);
printf("%d=",n);
for (i=2;i<=n;i++)
{
while(n!=i)
{
if(n%i==0)
{
printf("%d*",i);
n=n/i;
}
else break;
}
}
printf("%d",n);
return 0;
}本回答被提问者采纳
第3个回答  推荐于2018-03-29
fun(int m)//m是待分解的整数
{
for(i=2;i<m;)
{
if(m%i==0)
{
m=m/i;
printf("%d ",i);
}
else i++;
}本回答被网友采纳

用c++语言,编码实现将一个正整数分解质因数。例如:输入90,打印出90=...
用c++语言,编码实现将一个正整数分解质因数,可以参考下面的代码:include <stdafx.h> include <stdlib.h> int main(){ int i=2,n;printf("请输入需要分解的正整数:\\n");scanf("%d",&n);printf("分解质因数的结果为:\\n%d=",n);while(n>=2){ if(n%i==0) {printf("%d*",i)...

怎样用C++将一个正整数分解质因数?
if (n2 != 1)cout << "*";} } if(n2!=1) cout << n2;return 0;}

c++怎样运用函数编写分解质因数的代码?
思路:分解质因数,采用短除法。即求一个数分解质因数是,要从最小的质数2除起,一直除到结果为质数为止。c++编程:参考代码:include<iostream>using namespace std;int main(){int n,i,k=0;\/\/k用来标记是否是第一个质数 cin>>n;\/\/输入一个数 for (i=2;i<=n;i++)\/\/从2开始整除 {i...

用isprime的C++编写分解质因数的程序
an,flag;while(1) {printf("输入一个整数(0 -- 65535):");if(scanf("%d",&n) != 1 || n < 0 || n > 65535) {printf("数据错误。\\n");fflush(stdin); \/\/ 刷新键盘输入缓冲区用以清除非数字字符响应scanf("%d",&n)continue;}printf("%d = ",n)...

C++ 分解质因数
分解质因数编程:include<iostream> using namespace std;main(){ int n;cin>>n;int i;int k=0;for (i=2;i<=n;i++){ if (k==0&&n%i==0){ cout<<"n="<<i;n\/=i;\/\/找到第一个质因数,按格式输出 } while(n%i==0){ cout<<'*'<...

c++分解质因数过程
分解质因数的算式叫短除法。求一个数分解质因数,要从最小的质数除起,一直除到结果为质数为止。3、分解质因数编程:include <iostream> using namespace std;class QualityFactor { private:int n;public:void QFContract(long a) \/\/用短除法对合数进行分解 { n = 0; \/\/初始化 while(a>1){...

C语言编程 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3...
"%d",&n)!=1 || n<1){\/\/输入并限制大于0printf("Input error, exit...\\n");return 0;}printf("\\n%d = ",n);for(i=2;n>1;){\/\/分解质因数,i从2开始if(n%i==0){\/\/能被i整除则输出因数iprintf("%d",i);if((n\/=i)>1)\/\/未到最后一个因数则输出一个*号printf("...

c++分解质因数求教(时间复杂度一定要优秀!)
「分解质因数」定义:每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,把一个合数用质因数相乘的形式表示出来,叫做分解质因数,如30 = 2 × 3 × 5。质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数,1 既不是质数也不是合数。简单思路:先从n=2...

C语言分解质因数
将一个正整数分解质因数。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:1、如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。2、如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。3、如果n不能...

c++把合数分解为素因数连乘积的形式。
while(n!=k)\/\/质数等于n,则分解质因数的过程结束 { if(n%k==0)\/\/n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n { cout<<k<<"*";n=n\/k;} else break;} } cout<<n<<endl;} int main(void){ int n,k;cout<<"输入一个整数: ";cin>>n;fenjie(n);sys...

相似回答