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();
}
}
分享到:
相关推荐
"BAT批处理学习-数值计算-两整数相除的批处理.cmd.zip"这个资源是专门为学习如何在批处理脚本中进行基本的数值计算而设计的。下面我们将深入探讨批处理脚本的基础知识,以及如何在其中执行两整数相除的操作。 ...
C语言程序设计-用辗转相除法求两个整数的最大公约数;.c
算法题解-两数相除-不用除号-C语言,使用比较、加、减和位运算实现了32位有符号整数除法运算。
java代码-使用java求辗转相除法分解质因数的源代码 ——学习参考资料:仅用于个人学习使用!
算术运算是C语言编程的基础,包括整数相除、求余、复合运算符的作用、自增与自减运算等。在C语言中,算术运算可以通过使用算术运算符来实现,如加法、减法、乘法、除法等。 在本节中,我们将通过一个简单的示例程序...
当两个浮点数的绝对值很大时,转换成32-bit整数可能会导致信息丢失,这会影响除法结果的准确性。 标签“32-bit整数除法”强调了这个程序的核心运算。在实际应用中,32-bit整数除法广泛用于各种计算任务,特别是在...
西门子S7-200 PLC编程软件中提供了两种整数相除功能,即DIV指令和DIV_I指令,它们虽然都用于整数除法,但在处理结果上有显著的差异。 1. DIV指令:该指令用于对两个16位整数进行相除,其结果是一个32位的数据,其中...
当我们希望得到两个整数相除的完整结果,包括整数部分和小数部分时,我们有两个主要的解决方法。 首先,我们可以直接在被除数或除数中引入小数点,使得其中一个数变为浮点数。在Python中,如果除数或被除数是浮点数...
辗转相除法,也称为欧几里德算法,是一种用于求解两个整数的最大公约数的方法。该算法基于以下原理:两个整数a和b的最大公约数等于b和a除以b的余数的最大公约数。通过反复应用这个原理,可以逐步缩小两个整数的范围...
在这种模式下,两个16位整数相乘得到一个32位的积,而两个16位整数相除得到一个包含商和余数的32位结果。这种模式在需要更高精度或更大数据范围的应用场景中非常有用。 总之,S7-200 PLC的整数数学运算指令提供了...
提示:Java中,两个整数相除,结果还是整数,小数部分被去掉。例如,5/4 等 于 1(而不是 1.25 ),10/4 等于2(而不是 2.5)。如果想得到有小数部分的精确结果,进 行除法运算的两个值之一必须是一个具有小数点的数值。...
Java语言通过内置的`BigInteger`类提供了解决方案,但本文档介绍的是一个自定义实现的Java程序,用于执行大整数的加、减、乘、除以及求最大公约数(GCD)和最小公倍数(LCM)的操作,而不会出现溢出问题。...
利用辗转相除法求两个数的最大公约数。要求能接受用户的输入,输出最大公约数。 辗转相除法原理: 已知a,b,c为正整数,若a除以b余c,则(a,b)=(b,c),其中用(a,b)来表示a和b的最大公约数。(证明过程请参考其它...
例如,当两个非常接近的浮点数相除时,结果可能会是0,但实际上可能存在非零的小数部分。 2. **浮点数的舍入误差**:在计算过程中,可能会出现舍入误差,特别是在涉及除法和乘法的连续操作时。这些误差会累积,导致...
在编程领域,特别是Java语言中,求解两个整数的最大公约数(Greatest Common Divisor,简称GCD)是一项常见的任务。辗转相除法,又称欧几里得算法(Euclidean Algorithm),是一种高效的求解最大公约数的方法。该...
辗转相除法与更相减损术是古代中国数学中的两种重要的算法,它们主要用于寻找两个正整数的最大公约数(GCD)。这两种方法在数学和计算机科学中都有其历史价值和实际应用。 辗转相除法,又称为欧几里得算法,是基于...
辗转相除法是一种用于计算两个正整数最大公约数(Greatest Common Divisor, GCD)的经典算法。其基本思想是:对于任意两个正整数a和b(a > b),它们的最大公约数等于a除以b得到的余数r和b的最大公约数。如果b能被a...
两个整数相除 Java 中的实现。 两种解决方案。 包括测试脚手架。 留下第三个解决方案作为 WORK IN PROGRESS。 如果对我的方法感兴趣,请阅读我博客中的以下帖子: 希望你喜欢。 如果您有意见或问题,请在我博客的...
欧几里得算法,又称辗转相除法,是古希腊数学家欧几里得提出的一种求解两个正整数最大公约数(Greatest Common Divisor, GCD)的有效方法。这个算法基于一个基本事实:两个正整数a和b(a>b)的最大公约数等于a除以b...