#include <iostream>
#include "time.h"
#include "math.h"
using namespace std;
void calculation(int64_t m1, int64_t m2)
{
string e="there is not common factor between them";
int64_t larger_number; int64_t less_number;
int64_t k1 = 0; int64_t k2 = 0;
if(m1 == m2) throw e;
else
{
if(m1 > m2)
{
larger_number = m1; less_number = m2;
}
else
{
larger_number = m2; less_number = m1;
}
int64_t n = (larger_number>>1) + 1;
if(n < less_number) n = less_number;
int64_t s = 1;
for(int64_t k = 0; k < n; k++)
{
if(s <= m1)
{
s = s + m2; k1++;
}
if(s > m1)
{
s = s - m1; k2++;
}
if(s == 1)
{
cout<< "The integer retio is "<< k1<<" : "<<k2<<endl; // 打印最小自然数比
cout<< "The loops are "<<(k+1)<<endl;
cout<< "the greatest common number is "<< (m1/k1)<<endl; // 打印最大公因子
cout<< "The minimum common multiple is "<< (m1*k2)<<endl; // 打印最小公倍数
break;
}
}
if(s != 1) throw e;
}
}
int main()
{
int64_t number_1 = 45;
int64_t number_2 = 100;
cout<< "given two numbers are "<< number_1<<", "<<number_2<<endl; // 打印给定的两个自然数
if(!number_1 || !number_2){cout<< "Each number must be greater than zero "<<endl; return 0;} // 检查数据类型
try{ calculation(number_1, number_2);}
catch(string e)
{
cout<<e<<endl;
cout<<"\n"<< "The minimum common multiple is "<< (number_1*number_2)<<endl;// 打印最小公倍数,当两数不存在公因子时
}
return 0;
}
代码为C++ ;时间复杂性为 Θ(c)≤T ≤ O(n)。想知道怎么来的,当评论到达20个将公布。