思路:求最大公约数,假设这两个数分别为n,m,在求最大公约数时,不用中间变量可以用while(m != 0 && (n %= m) != 0)
代码如下:
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.PrintWriter;
import java.io.IOException;
import java.io.StreamTokenizer;
import java.util.Scanner;
public class Main implements Runnable{
private Scanner cin;
private PrintWriter cout;
private static final boolean DEBUG = false;
private int n, m;
private void init()
{
try
{
if (DEBUG)
{
cin = new Scanner(new BufferedReader(new InputStreamReader(new FileInputStream("e:\\program\\idea\\spoj\\spoj.txt"))));
}
else
{
cin = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
}
cout = new PrintWriter(System.out);
}
catch (IOException e)
{
e.printStackTrace();;
}
}
private boolean input()
{
if (!cin.hasNextInt()) return false;
n = cin.nextInt();
m = cin.nextInt();
return true;
}
private void solve()
{
int a = n, b = m;
while( b!= 0 && (a %= b) != 0) b %= a;
int ans = n * m / (a + b);
cout.println(ans);
cout.flush();
}
public void run() {
init();
while (input())
{
solve();
}
}
public static void main(String[] args)
{
new Thread(new Main()).start();
}
}