题目描述:两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。
比如,11/13=6=>0.846153846153… 其循环节为[846153] 共有6位。
下面的方法,可以求出循环节的长度。
import java.util.Vector; public class test3 { public static void main(String[] args) { System.out.println(f(11,13)); } public static int f(int n,int m){ n=n%m; Vector v=new Vector(); for(;;){//无限循环 v.add(n);//将每次的余数添加到数组中 n*=10;//当前余数扩大10倍,求得下一位余数 n=n%m; if(n==0) return 0; //如果当前的余数不是第一次出现,那么就说明已经循环节出现了 if(v.indexOf(n)>=0) //为了避免循环部分是相同的数字的情况,因此需要减去第一次出现的位置 return v.size()-v.indexOf(n); } } }
输出:
6