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];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客