java-编程实现两个正整数的除法,当然不能用除法操作符
编程技术  /  houtizong 发布于 3年前   67
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 binarySearchpublic 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)/2rest=x-y*mid;if(rest<0){high=mid-1;}if(rest>=y){low=mid+1;}}while(!(rest>=0&&rest<y));return mid;}}
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成
网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];
文章归档
文章标签
友情链接