C语言求错,输出所有满足下列条件的正整数对(a,b):a+b=99(只要求a<b)且a和b的最大公约数是3的倍数

问题程序:
#include<stdio.h>
int main()
{
int a,b,m,n,r,c;
for(a=1;a<50;a++)
{
b=99-a;
m=a;0n=b;
while(c=m%n)
{m=b;n=c;}
if(c%3==0)
printf("(%d,%d)",a,b);
else
;
}
}
错误执行结果

正确执行结果:
(3,96)(6,93)(9,90)(12,87)(15,84)(18,81)(21,78)(24,75)(27,72)(30,69)(33,66)(36,63)(39,60)(42,57)(45,54)(48,51)

#include<stdio.h>
int main()
{
int a,b,m,n,r,c;
for(a=1;a<50;a++)
{
  b=99-a;
  m=a;n=b;//这里多了一个0 åº”该是手误
       while(c=m%n)
       {m=b;n=c;}
  if(n%3==0)//辗转相除法 æœ€ç»ˆçš„最大公约数是n而不是c
    printf("(%d,%d)",a,b);
  else
     ;
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-04-14
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
int mygcd(int x,int y){
    int r;
    while(r=x%y)       
        x=y,y=r;
    return x;  
}
int main(void){
    int a,b;
    for(a=3;a<50;a+=3)
        if(b=99-a,mygcd(a,b)%3==0)
            printf("(%d,%d)",a,b);
    printf("\n");
    return 0;
}

第2个回答  2015-04-14
for(a=1;a<50;a++)
{
b=99-a;
/*
m=a;0n=b;
while(c=m%n)
{m=b;n=c;}
*/
//if(c%3==0)
if(a % 3 == 0 && b % 3 == 0)
printf("(%d,%d)",a,b);
else
;
}
相似回答