`

java-两整数相除,求循环节

 
阅读更多
import java.util.ArrayList;
import java.util.List;

public class CircleDigitsInDivision {

	/**
	 * 题目:求循环节,若整除则返回NULL,否则返回char*指向循环节。先写思路。函数原型:char*get_circle_digits(unsigned k,unsigned j) 
	 * 解答: 回想我们使用手算时如何发现循环节: 
	 * -如果除得的余数等于0,则说明整除; 
	 * -如果除得的余数不等于0,则将余数乘以10,继续相除; 
	 * -直到发现两次获得的余数相等,则找到了循环节。
	 * 以下程序用一个ArrayList来存储余数,当某次求得的余数在这个ArrayList里面已存在,则循环找到
	 */
	public static void main(String[] args) {
		int dividend=1;
		for(int i=1;i<50;i++){
			String str = circleDigits(dividend,i);
			if(str!=null){
				System.out.println(dividend+"/"+i+"-"+str+"-"+(0.0+dividend)/i);
			}
		}
	}

	public static String circleDigits(int dividend, int divisor) {
		if (dividend < 0 || divisor <= 0) {
			return null;
		}
		if (dividend % divisor == 0) {
			return null;
		}
		List<Integer> quotientList = new ArrayList<Integer>();//store a/b
		List<Integer> leftList = new ArrayList<Integer>();//store a%b
		int left= dividend % divisor;
		while(!leftList.contains(left)){
			leftList.add(left);
			left*=10;
			int quotient=left / divisor;
			quotientList.add(quotient);
			left%=divisor;
			if(left==0){
				return null;
			}
		}
		int circleBegin=leftList.indexOf(left);
		quotientList = quotientList.subList(circleBegin,quotientList.size());
		//transfer list [x,y,z] to "xyz"
		StringBuilder sb=new StringBuilder();
		for(int i=0,len=quotientList.size();i<len;i++){
			sb.append(quotientList.get(i));
		}
		return sb.toString();
	}
}

0
0
分享到:
评论

相关推荐

    Java本科组循环小数

    程序输出两个整数做除法产生的小数或无限循环小数(循环节用方括号括起)。 要求考生把所有类写在一个文件中。 调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。 相关的工程文件不要拷入。请不要使用...

    蓝桥杯第六届省赛(Java语言A组)试题解答.pdf

    **题目背景**:计算两个整数相除产生的循环小数中的循环部分的长度。 **核心算法**: - 使用辗转相除法进行除法运算,直至发现重复的余数。 - 统计循环部分的长度。 通过以上四个具体题目的解析,可以看出蓝桥杯...

    java代码-最大公约数

    本节我们将深入探讨如何使用Java编写代码来计算两个数的最大公约数。 1. **欧几里得算法**: 最大公约数的计算通常采用欧几里得算法,也称为辗转相除法。该算法基于以下原理:两个正整数a和b(a&gt;b),它们的最大公...

    《c++程序设计》答案

    在第一段代码中,两个函数`Y`和`B`分别用于计算两个整数的最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common Multiple, LCM)。其中: - `Y`函数通过欧几里得算法(辗转相除法)来求解最大公...

Global site tag (gtag.js) - Google Analytics