public class MyDiv {
/**
* 题目:编程实现两个正整数的除法,当然不能用除法操作符。
* 方法1:除数不断乘以2,直到最接近被除数
* 方法2:二分查找
* 扩展题目:如何求出a%b的值,要求不能使用除法和求模运算!
* 解答:在上面求出商(假设为c)之后,a%b=a-(b*c);
*/
private static boolean INVALID_INPUT;
public static void main(String[] args) {
int x=24;
for(int y=1;y<=x;y++){
System.out.printf("%d/%d=%d%n", x,y,div01(x,y));
System.out.printf("%d/%d=%d%n", x,y,div02(x,y));
}
}
// return x/y. Let y*2*2*2...to be close to x.
public static int div01(int x, int y) {
if (!(x > 0 && y > 0 && x >= y)) {
INVALID_INPUT = true;
return -1;
}
int result = 0;
while (x >= y) {
int f = 1;
/*
* may overflow,change it to (y*f)<=(x/2)
while (y * f * 2 <= x) {
f = f * 2;
}
*/
while (y * f <= (x >> 1)) {
f = f * 2;
}
result += f;
x -= f * y;
}
return result;
}
// return x/y. Like binarySearch
public static int div02(int x, int y) {
if (!(x > 0 && y > 0 && x >= y)) {
INVALID_INPUT = true;
return -1;
}
int low=1;
int high=x;
int mid=0;
int rest=x;
do{
mid=(low&high)+(low^high)/2;//low+(high-low)/2
rest=x-y*mid;
if(rest<0){
high=mid-1;
}
if(rest>=y){
low=mid+1;
}
}while(!(rest>=0&&rest<y));
return mid;
}
}
分享到:
相关推荐
在Verilog中,可以使用操作符如`/`和`%`来进行除法和取余运算,但这些操作符在硬件层面并不直接对应,因此需要自定义硬件逻辑来实现。 接着,我们转向32位无符号除法器(DIVU)。无符号除法器处理的数仅包含正数和...
其中,除法操作符(/)的行为取决于操作数的类型,如果两个操作数都是整数,执行整数除法,结果也保留为整数。一旦涉及浮点数,则执行浮点数除法。取模操作符(%)仅适用于整数类型,其结果是两个整数相除后的余数。 ...
在这个场景中,我们关注的是如何通过操作符重载来实现分数与整数的混合运算,包括正负数的处理。下面将详细探讨这个主题。 首先,我们需要创建一个分数类(Fraction)来存储分数数据。这个类通常包含两个私有成员...
算法输入:一个算术表达式,由常量、变量、运算符和括号组成(以字符串形式输入)。为简化,规定操作数只能为正整数,操作符为+、-*、/,用#表示结束。 算法输出:表达式运算结果。
### Java基础编程题知识点解析 #### 一、斐波那契数列 **知识点:** - **递归算法**:通过函数自身调用的方式解决。 - **循环算法**:使用循环结构来避免递归带来的性能问题。 **描述:**编写程序生成斐波那契数列...
这道题是分解质因数,需要找到所有能整除给定正整数n的质数,直到n变为1。质因数是质数且能整除n的数。可以采用试除法,从2开始逐个尝试。 【程序5】 该程序使用了条件运算符,如(a>b)?a:b,根据条件a是否大于b,...
程序1中使用了循环,通过维护两个变量`f1`和`f2`来保存当前数列的前两个元素,每次迭代更新这两个变量,计算下一个数。 - 知识点:循环结构(for循环),变量的动态更新,数学序列的实现。 2. **素数判断**(程序2...
例如,在编程语言中,乘方运算通常通过`**`操作符实现,如在Python中,`a ** b`表示a的b次方。 总结一下,有理数的乘法、除法和乘方运算是基础数学的一部分,对于理解和应用IT技术至关重要。无论是在编写算法、解析...
- 除数为零时,整数除法会产生`ArithmeticException`,而浮点数除法则会产生`NaN`或`Infinity`。 14. **`strictfp`修饰符**: - `strictfp`修饰符保证浮点运算结果的一致性,特别是在多线程环境中。 - 使用此修饰...
- 操作符重载(虽然Java不支持直接的操作符重载,可以通过方法的命名来模拟这种效果)。 #### 实验总结 通过这三个实验,学生可以全面地学习和练习面向对象编程的基本概念和技术。不仅能够掌握类和对象的基本定义...
- **实现**: 遍历101到200之间的每个数,使用试除法来判断是否为素数(即除了1和自身外,不能被其他任何数整除)。 #### 3. 水仙花数 - **知识点**: 水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如...
- 使用除法和取余操作计算每种面额的数量 - 输出结果时注意格式化,确保清晰易读 ### 4. 数组操作与统计 - **知识点**: - 数组的初始化 - 随机数生成 - 循环结构 - 统计计算 - **技术要点**: - 使用`rand...
它使用两个嵌套循环,外层循环遍历每个数,内层循环检查当前数是否能被小于或等于其平方根的任何数整除。如果不能被整除,那么这个数就是素数。这种方法提高了效率,因为任何大于其平方根的因子都会有一个对应的因子...
位操作符在这种情况下更快,因为它直接检查最低位是否为1,而不需要进行除法运算。 接下来是“找零时刻”的谜题。在计算找零时,使用`double`类型可能会导致精度问题。由于二进制浮点数无法精确表示某些十进制数,...
- 描述:从键盘输入两个正整数`a`和`b`,计算并输出`a/b`的商和余数。 - 关键知识点: - 输入输出操作:`scanf`用于接收用户输入,`printf`用于输出结果。 - 运算符:除法`/`和取模`%`运算符的应用。 - 数据...
在Python编程语言中,除法运算有三种不同的形式:传统除法、Floor除法(也称为截断除法)和真除法。这些除法运算符在Python 2和Python 3中有所不同,但Python 3是当前主要使用的版本,所以我们主要关注Python 3的...
在这个问题中,我们关注的是正整数操作数,四种基本运算符(加、减、乘、除),以及括号作为分隔符。表达式的起始和结束符是“#”,这使得表达式的边界清晰。 算术表达式求值的常见方法之一是算符优先法,也称为...
- 加法测试:验证两个正数、两个负数以及正负数相加的结果。 - 减法测试:测试减法操作,包括负数减负数、正数减负数等。 - 乘法测试:检查乘法运算的正确性,包括整数和小数的乘法。 - 除法测试:确保除法运算在非...
- **整数运算**:C语言支持基本的数学运算操作符,如加法`+`、减法`-`、乘法`*`、除法`/`和取模`%`。例如: ```c int a = 10, b = 3; int c = a + b; // 加法 int d = a - b; // 减法 int e = a * b; // 乘法 ...
1.5.6. 输入两个整数 n 和 m,从数列 1,2,3.......n 中 随意取几个数 ....... 116 1.5.7. 输入一个表示整数的字符串,把该字符串转换成整数并输出.............. 118 1.5.8. 给出一个数列,找出其中最长的单调...