3个c++程序分解质因数,求最大公约数和最小公倍数,方便数学计算
1.分解质因数
##include <iostream>
using namespace std;
int main(){
while (1){
long long x, c=0, count =2;
cout<<"factorization:";
cin>>x;
cout<<x;
if (x>=2) {
while ((c!=0||count<x)&&x!=1){
if (x % count == 0) {
if (c!=0) cout<<'*';
else cout<<'=';
cout<<count ;
c++;
x/=count ;
}else count++;
}
if (c==0) cout<<" is a prime number.";
}
cout<<"\n\n";
}
return 0;
}
2.最小公倍数
#include <iostream>
using namespace std;
long long lcm(long long x,long long y);
int main(){
long long x, y;
while (1){
cout<<"Enter two numbers:";
cin>>x>>y;
cout<<"The lowest common multiple is "<<lcm(x, y)<<"\n\n";
}
return 0;
}
//The lowest common multiple
long long lcm(long long x,long long y){
long long a=x,b=y,z;
while(a!=b){
if(a>b) a-=b;
else b-=a;
}
z=(x/a)*(y/a)*a;
return z;
}
3.最大公约数
#include <iostream>
using namespace std;
long long gcd(long long x,long long y);
int main(){
long long x, y;
while (1){
cout<<"Enter two numbers:";
cin>>x>>y;
cout<<"The greatest common divisor is "<<gcd(x, y)<<"\n\n";
}
return 0;
}
//Greatest common divisor(gcd)
long long gcd(long long x,long long y){
while(x!=y){
if(x>y) x-=y;
else y-=x;
}
return x;
}
输入ctrl^c停止
注意,输入的数字不宜过大,否则会发生溢出。
4.实际验证
以乌班图20.04为例
$ ls
factorization.cpp gcd.cpp lcm.cpp
$ g++ factorization.cpp
$ ls
a.out factorization.cpp gcd.cpp lcm.cpp
$ ./a.out
factorization:100
100=2*2*5*5
factorization:6250
6250=2*5*5*5*5*5
factorization:^C
$ g++ gcd.cpp
$ ls
a.out factorization.cpp gcd.cpp lcm.cpp
$ ./a.out
Enter two numbers:100 500
The greatest common divisor is 100
Enter two numbers:17 2
The greatest common divisor is 1
Enter two numbers:^C
$ g++ lcm.cpp
$ ./a.out
Enter two numbers:170 280
The lowest common multiple is 4760
Enter two numbers:20000 56789
The lowest common multiple is 1135780000
Enter two numbers:^C
github下载:git@github.com:yjr-jack/prime