求最小公倍數
請問大佬們是哪里錯了
uj5u.com熱心網友回復:
演算法根本不對比如9和7
j=63
然后j又等于j/7??
uj5u.com熱心網友回復:
#include<iostream>
using namespace std;
int main(){
int k=0;
long long n,sum;//這里使用long long 整型,由于資料存在較大的情況,用int型會造成資料溢位
cin>>n;
if(n<3){ //若輸出的小于三,取不到三個數,則輸入的這個數就是最小公倍數,也就是要么是1要么是2
cout<<n<<endl;
}else{ //當大于三個數時,取最大數的最小公倍數,基本想到的是取這些數里最大的三個,然后相乘取到公倍數
if(n%2==0){ //但是這里存在兩種特殊情況
if(n%3==0){
sum=(n-1)*(n-2)*(n-3); //最大的一位既能被二整除,又能被三整除,最大位開始,依次減一
}
sum=n*(n-1)*(n-3); //最大的一位能被二整除,則取到的三位,最小的一位要減一
}else{
sum=n*(n-1)*(n-2);//不屬于上述兩種情況,直接取最后三位相乘,取最小公倍數
}
cout<<sum;
}
}
uj5u.com熱心網友回復:
演算法絕對錯誤!會不會用最簡單的回圈? 我先收藏一下,等會上電腦告你uj5u.com熱心網友回復:
[code=c++]#include <iostream>using namespace std;
int main()
{
int n, m;
int ans;
cin >> n >> m;
int i;
if (n > m)
i = n;
else
i = m;
while (true)
{
if (i % n == 0 && i % m == 0) {
ans = i;
break;
}
i++;
}
cout << ans << endl;
return 0;
}[/code]
uj5u.com熱心網友回復:
你的想法是,先求出最大公約數,然后除以兩數之積,我也經常這樣用
僅供參考
#include<iostream>
using namespace std;
int gcd(int a,int b){
int c;
//不需要交換誰大誰小的
while(a%b){
c=a%b;
a=b;
b=c;
}
return c;
}
int main(){
int a,b,j,p;
cin>>a>>b;
j=a*b;
p=gcd(a,b);
cout<<j/p<<end;
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/94460.html
標籤:新手樂園
上一篇:有大神可以幫幫忙嗎,急救
下一篇:關于使用new創建動態結構
