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();
}
}
分享到:
相关推荐
C语言程序设计-用辗转相除法求两个整数的最大公约数;.c
为避免误触发,有些改为了txt格式,使用时请自行查看业务然后改为bat格式即可。
算法题解-两数相除-不用除号-C语言,使用比较、加、减和位运算实现了32位有符号整数除法运算。
java代码-使用java求辗转相除法分解质因数的源代码 ——学习参考资料:仅用于个人学习使用!
算法-计算浮点数相除的余(信息学奥赛一本通-T1029)(包含源程序).rar
西门子S7200PLC编程软件里面的整数相除功能西门子plc.docx
辗转相除法,也称为欧几里德算法,是一种用于求解两个整数的最大公约数的方法。该算法基于以下原理:两个整数a和b的最大公约数等于b和a除以b的余数的最大公约数。通过反复应用这个原理,可以逐步缩小两个整数的范围...
今天小编就为大家分享一篇Python解决两个整数相除只得到整数部分的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
利用辗转相除法求两个数的最大公约数。要求能接受用户的输入,输出最大公约数。 辗转相除法原理: 已知a,b,c为正整数,若a除以b余c,则(a,b)=(b,c),其中用(a,b)来表示a和b的最大公约数。(证明过程请参考其它...
06-课件:算术运算—整数相除.pptx
主要介绍了Python两个整数相除得到浮点数值的方法,本文直接给出代码示例,需要的朋友可以参考下
两个整数相除 Java 中的实现。 两种解决方案。 包括测试脚手架。 留下第三个解决方案作为 WORK IN PROGRESS。 如果对我的方法感兴趣,请阅读我博客中的以下帖子: 希望你喜欢。 如果您有意见或问题,请在我博客的...
该算法实现两个数相除,并且能输出到屏幕上和文件中保留小数点后100位,是一个很经典的算法。
主要介绍了Java中使用辗转相除法求最大公约数,本文直接给出代码实例,需要的朋友可以参考下
在C++中用函数递归调用的方法实现辗转相除法求两个整数的最大公因子。
这是基于java的求最大公约数,使用的是最节省内存的辗转相除法
辗转相除法求最大公约
程序输出两个整数做除法产生的小数或无限循环小数(循环节用方括号括起)。 要求考生把所有类写在一个文件中。 调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。 相关的工程文件不要拷入。请不要使用...