PTA:本题要求两个给定正整数的最大公约数和最小公倍数

2023-11-30 18:30:56 浏览数 (2)

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;
}

*本人才识浅陋,粗陋建议仅供参考。 *

0 人点赞