关于C++求最大公约数,最小公倍数的程序

#include
using namespace std; int gongyue(int x,int y);//声明求公约函数 int gongbei(int x,int y);//声明求公倍数函数 int main() { int i,T,a[]={0},b[]={0},c[]={0},d[]={0}; cin>>T;//输入T为行数 for(i=0;i
>a[i]>>b[i];//每行输入两个用来求小公倍数和最大公约数的数 } cout<<endl; c[i]=gongyue(a[i],b[i]); d[i]=gongbei(a[i],b[i]);//两个函数调用 for(i=0;i<T;i++) { cout<<c[i]<<"\t"<<d[i]<<endl;//用来输出最大公约数和最小公倍数 } return 0; } int gongyue(int x,int y)//定义公约数函数 { int temp,j; if(x<y) { temp=x; x=y; y=temp; } for(int i=0;i<temp;i++) { if(x%i==0&&y%i==0) j=i; } return j; } int gongbei(int x,int y)//定义公倍数函数 { int k; for(int i=0;;i++) { if(i%x==0&&i%y==0) { k=i; } break; } return k; } 如上,编译之后执行只能输入,但是根本无法输出,求大神解

第1个回答  2015-01-04
#include <iostream>
using namespace std;
int gongyueshu(int x,int y)//声明求公约数函数
{
int t=0;
if(x<y)
{
t=x;
x=y;
y=t;
}
if(y==0) return x;
t=x%y;
while(t!=0)
{
x=y;
y=t;
t=x%y;
}
return y;
}
int gongbeishu(int x, int y)//声明求公倍数函数
{
return x*y/gongyueshu(x,y);
}
int main()
{
int i=0,j=0;
int y=0,b=0;
//每行输入两个用来求最小公倍数和最大公约数的数
while(cin)
{
cin>>i>>j;
y=gongyueshu(i,j);
b=gongbeishu(i,j);
cout<<i<<"与"<<j<<"的公约数:"<<y<<endl;
cout<<i<<"与"<<j<<"的公倍数:"<<b<<endl;
}
return 0;
}
第2个回答  2015-01-04

公约数函数有问题

 int gongyue(int x,int y)//定义公约数函数
  { 
  int temp,j; 
  if(x<y) 
  {  temp=x;  x=y;  y=temp; }
   for(int i=1;i<temp;i++)
    {  
    if(x%i==0&&y%i==0)
       j=i;
        }
         return j;
          }

最简单的改法就是这样了 i从1开始计数 

如果从0开始 会出现x%0的情况 这个会出错的 和除0一个效果 

第3个回答  2015-01-04
请到我的文库去看,有这两个程序。追问

我比较纠结的是前面的数组循环输出为什么输出空白,后面的调用函数我是验证过的没有问题

追答

你把代码发给我,别这么乱的代码,发我Q上,1115058276

本回答被提问者采纳
相似回答