分解质因数,求最大公约数和最小公倍数

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值