PTA:本题要求两个给定正整数的最大公约数和最小公倍数
PTA:本题要求两个给定正整数的最大公约数和最小公倍数。输入格式:输入在一行中给出两个正整数M和N(≤1000)。输出格式:在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。输入样例: 511 292输出样例::73 2044#include <stdio.h>int main(){int num1, num2;scanf("%d %...
·
PTA:本题要求两个给定正整数的最大公约数和最小公倍数。
输入格式:输入在一行中给出两个正整数M和N(≤1000)。
输出格式:在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。
输入样例: 511 292
输出样例::73 2044
#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;
}
*本人才识浅陋,粗陋建议仅供参考。 *
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献2条内容
所有评论(0)