|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
//题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
#include<stream.h>
#include<stdio.h>
int main()
{
int m,n;
cout<<"输入两个正整数m和n,求其最大公约数和最小公倍数:";
cin>>m>>n;
int A[n];
int a;
for (a=1;a<=n;a++)
{
if (m%a==0 && n%a==0)
A[a-1]=a;
}
int max,i;
max=A[0];
for(i=0;i<=n;i++)
{
if(A[i]>max)
{
max=A[i];
}
}
printf ("%d",max);
}
哪里出错了,请指教,谢谢~
- #include<iostream>
- using namespace std;
- int main()
- {
- int m, n;
- cout << "input m & n, find gcd & lcm:" << endl;
- cin >> m >> n;
-
- int a;
- if (m < n)
- {
- for (a = m; a > 1; a--)
- {
- if (m%a == 0 && n%a == 0)
- break;
- }
- }
- else
- {
- for (a = n; a > 1; a--)
- {
- if (m%a == 0 && n%a == 0)
- break;
- }
- }
- int b = m * n / a;
-
- cout << "gcd = " << a << " " << "lcm = " << b;
- }
复制代码参考以下,有点疑惑,写 C++ 就全面用 C++ 的方法。直接 #include <iostream> 就好。原则上不应该用 using namespace std; 但是懒惰改,所以用了。
int A[n]; 半动态分配内存有问题,不支持这样做。暴力破解的循环出错了。我写if else ,不要管我,确保 m < n 才能用而已。最小公倍数有方式,只要算出最大公约数就可以了
|
|