PTA:本题要求两个给定正整数的最大公约数和最小公倍数。
输入格式:输入在一行中给出两个正整数M和N(≤1000)。 输出格式:在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。
输入样例: 511 292
输出样例::73 2044
代码语言:javascript复制#include <stdio.h>int main()
{ int num1, num2;
scanf("%d %d", &num1, &num2);
int i,j;
int s1,s2,nums,min,num3;
float s3, s4;
for (i=1;i<=num2;i ){
s1=num1*i;;
for (j=1;j<=num1;j ){
s2=num2*j;
if (s1 == s2){
nums = s2;
break;
}
}
if (nums != 0){
break;
}
}
int a1,a2,a[1000]={};
int w;
if (num1<num2) min=num1;
else min=num2;
for (w=1;w<=min;w ){
s3=(float)num1/w;
s4=(float)num2/w;
a1=(int)s3;
a2=(int)s4;
//printf("s3 = %f ", s3);
//printf("s4 = %f ", s4);
if (s3-(float)a1==0&&s4-(float)a2==0){
a[w-1]=w;
}
else{
a[w-1]=1001;
continue;
}
//printf("num = %d", a[w-1]);
int q; //printf("a[q] = %d", a[q]);
for (q=min;;q--){
if (a[q]!=0&&a[q]!=1001){
num3 = a[q];
break;
}
} //printf(" %d ", a[3]);
printf("%d %d", num3, nums);
return 0;
}