赞
踩
两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。
比如,11/13=6=>0.846153846153..... 其循环节为[846153] 共有6位。
下面的方法,可以求出循环节的长度。
请仔细阅读代码,并填写划线部分缺少的代码。
public static int f(int n, int m)
{
n = n % m;
Vector v = new Vector();
for(;;)
{
v.add(n);
n *= 10;
n = n % m;
if(n==0) return 0;
if(v.indexOf(n)>=0) _________________________________ ; //填空
}
}
二、代码分析
- package Lan2015;
-
- public class XunHuanJieChangDu {
- public static void main(String[] args) {
- /*两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。
- 比如,11/13=6=>0.846153 846153..... 其循环节为[846153] 共有6位。
- 下面的方法,可以求出循环节的长度。
- 请仔细阅读代码,并填写划线部分缺少的代码
- public static int f(int n, int m)
- {
- n = n % m; //用来得到余数
- Vector v = new Vector();//创建一个Vector数组
- for(;;) // 无限的循环
- {
- v.add(n);//给v里加了个数,即刚才的余数
- n *= 10;//将余数扩大10倍
- n = n % m;//再除以m取余数,
- if(n==0) return 0;//能整除的情况
- if(v.indexOf(n)>=0) //查找数组中n元素的索引,并返回索引值
- _________________________________ ; //填空
- }
- }*/
- // 1/3= 0.3333
- //1%3==1
- //进入循环
- //v{1}
- //n = n * 10 = 1 * 10 = 10
- //n = n % m = 10 % 3= 1
- //n != 0
- //v.indexOf(1) = 0,return v.size() - v.indexOf(n) = 1 -0 = 1
-
- //7/18 = 0.388888
- //7%18=7
- //n=7
- //for
- //v{7}
- //n=70
- //n=70%18=16
- //for
- //v{7,16}
- //n=160
- //160%18=16
- //v.indexOf(16)=1>0,return 2-1=1
- }
- }
理解每一行代码的意思,然后找一些值代入计算一下,要找一些特殊的值
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。