Java 列出最简真分数序列 循环输入一个整数N输出输出一行,分数之间用逗号分开,最后一个分数的后面没有逗号,第一个数前面也没有逗号样例输入40样例输出1/40,3/40,7/40,9/40,11/40,13/40,17/40,19/40,21
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/30 02:52:50
Java 列出最简真分数序列 循环输入一个整数N输出输出一行,分数之间用逗号分开,最后一个分数的后面没有逗号,第一个数前面也没有逗号样例输入40样例输出1/40,3/40,7/40,9/40,11/40,13/40,17/40,19/40,21
Java 列出最简真分数序列 循环
输入
一个整数N
输出
输出一行,分数之间用逗号分开,最后一个分数的后面没有逗号,第一个数前面也没有逗号
样例输入
40
样例输出
1/40,3/40,7/40,9/40,11/40,13/40,17/40,19/40,21/40,23/40,27/40,29/40,31/40,33/40,37/40,39/40
Java 列出最简真分数序列 循环输入一个整数N输出输出一行,分数之间用逗号分开,最后一个分数的后面没有逗号,第一个数前面也没有逗号样例输入40样例输出1/40,3/40,7/40,9/40,11/40,13/40,17/40,19/40,21
package com.test.math;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
int number = -1;
System.out.print("enter a number..."); //输入任意整数
Scanner reader = new Scanner(System.in);
number = reader.nextInt();
System.out.println(number);
getResult(number);
}
private static void getResult(int number) {
StringBuffer sb = new StringBuffer("");
for (int i = 1; i < number; i++) {
if(commonDivisor(i,number)==1){ //只有最大公约数为1时,是真分数
sb.append("".equals(sb.toString())?i+"/"+number :","+i+"/"+number);
}
}
System.out.println(sb.toString());
}
private static int commonDivisor(int n,int m) { //得到最大公约数
while (n % m != 0) {
int temp = n % m;
n = m;
m = temp;
}
return m;
}
}
最大公约数的求法是辗转相除法,不明白的话网上也可以查一下,很多,程序已经测试,能运行,望楼主采纳...