最小公倍数、最大公约数、质数因子

1、最大公约数

int gcd(int a, int b){
  int tmp = abs(a-b);
  while(tmp != 0){
    a = b;
    b = tmp;
    tmp = abs(a-b);
  }
  return b;
}

 

2、最小公倍数

(1)最小公倍数 = a*b/gcd(a,b);

(2)最小公倍数在[max(a,b),a*b]这个区间里,

for(int i = max(a, b); i <= a*b; i++){
  if(i%a == 0 && i%b == 0){
    cout << i << endl;
    break;
  }
}

 

3、质数因子

#include<iostream>
#include<cmath>
using namespace std;

int main(){
    long number;
    cin >> number;
    for(int i = 2; i <= sqrt(number); i++){//number>=4 
        while(number%i == 0){//可以整除,说明i是质数因子 
            cout << i <<" ";
            number = number/i;//得到的数看看能否被i再次整除,可以则输出,不可则i+1继续 
        }
    }
    if(number-1){//number<4
        cout << number;
    }
    return 0;
}

 

posted @ 2022-05-28 18:16  芯琪77  阅读(53)  评论(0编辑  收藏  举报