View Code of Problem 3836

#include<stdio.h>
#include<math.h>
int ishuzhi(int a,int b)
{
	if(a==1||b==1)
	return 1;
	
	int min=a<b?a:b;
	for(int i=2;i<=min;i++)
	{
		if(a%i==0&&b%i==0)
		return 0;
	}
	return 1;
}
int main()
{
	int n,m,c,d;
	int a=1000000,b=1000000;
	
	while(scanf("%d %d",&n,&m)!=EOF)
	{
		a=1000000;b=1000000;
		int sum=m/n;
	int min=a+b;
	for(int i=1;i<sum;i++)
	{
		if(sum%i==0)
		{
			if(ishuzhi(i,sum/i)==1)
			{
				c=i*n;d=sum/i*n;
//			printf("%d %d %d\n",c,d,min);
			}
		}
		else 
		{
			continue;
		} 
		
		if((c+d)<min)
		{
			a=c;b=d;
			min=a+b;
		}
	
	}
	if(a>b)
	{
		int x=b;b=a;a=x;
	}
	printf("%d %d\n",a,b);	
	}
	
} 

Double click to view unformatted code.


Back to problem 3836