“计算减去3次的算法”算法采用theta(| input |)步骤 . 您可能会认为theta(| input |)适用于32位整数,在这种情况下为什么要进行任何编程?只需使用查找表 . 但是,有更快的方法可用于更大的输入 .

您可以对商进行二元搜索,通过将q q q与输入进行比较来测试候选商q是否太大或太小 . 二进制搜索需要theta(log | input |)时间 .

二进制搜索使用除以2,这可以由移位运算符而不是/来完成,或者如果移位运算符太接近除法,您可以在位数组上自己实现 .

通过尝试(n >> 2)(n >> 4),使用1/3是几何级数1/4 1/16 1/64 1/256之和的事实是很诱人的(n> > 6)......然而,对于n = 3,6,7,9,11,12,13,14,15,18,......这产生了错误的答案......对于n = 15,30,它关闭了两个, 31,39,....一般来说,这是由O(log n)关闭的 . 对于n非负,

(n>>2) + (n>>4) + (n>>6) + ... = (n-wt4(n))/3

其中wt4(n)是n的基数4位的和,右侧的/是精确的,而不是整数除法 . 我们可以通过将wt4(n)/ 3加到(n >> 2)(n >> 4)(n >> 6)来计算n / 3.我们可以计算n的基数4,因此wt4(n) )仅使用加法和右移 .

int oneThirdOf(int n){

if (0<=n && n<3)

return 0;

if (n==3)

return 1;

return sum(n) + oneThirdOf(wt4(n));

}

// Compute (n>>2) + (n>>4) + (n>>6) + ... recursively.

int sum(int n){

if (n<4)

return 0;

return (n>>2) + sum(n>>2);

}

// Compute the sum of the digits of n base 4 recursively.

int wt4(int n){

if (n<4)

return n;

int fourth = n>>2;

int lastDigit = n-fourth-fourth-fourth-fourth;

return wt4(fourth) + lastDigit;

}

这也需要theta(日志输入)步骤 .

java中除法乘法,将数字除以3而不使用除法,乘法或模数相关推荐

  1. java输出两个整数的积_如何检查Java中的两个数字相乘是否会导致溢出?

    如何检查Java中的两个数字相乘是否会导致溢出? 我想处理两个数字相乘导致溢出的特殊情况. 代码看起来像这样: int a = 20; long b = 30; // if a or b are bi ...

  2. java 数字表示什么意思是什么_nan数字是什么意思 java中double值是非数字值是什么意思?...

    python 三路快排算法别总拿自己的饱经风霜的脸说事,美的不突出,丑的不别致. class quick_sort(object): def _partition(self, alist, p, r) ...

  3. JAVA中如何将大数字或字符串放进数组

    JAVA中如何将大数字或字符串放进数组 在JAVA学习过程中字符串.数组.数字之间的 的转换经常用到,记录一些非常基础的转换. 1.将数字转换为字符串:String str = String.valu ...

  4. JAVA中计算百分比 格式化数字

    JAVA中计算百分比 格式化数字 这个是我在程序使用的例子: public String myPercent(int y,int z){    String baifenbi="" ...

  5. JAVA中右移一位和除以2的区别

    关于JAVA中>>1和/2的区别(原码反码补码) 首先说明此处的讨论仅限数值上的区别 测试代码如下 package com.qiu.test; import org.junit.Test; ...

  6. java中如何确定是数字_java中怎么判断指定的数据是字符串是否是数字?

    展开全部 java中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){for (int i = 0; i ...

  7. Java中的低GC:使用原语而不是包装器

    总览 有两个很好的理由在可能的地方使用原语而不是包装器. 明晰. 通过使用原语,您可以清楚地知道null值是不合适的. 性能. 使用原语通常更快. 清晰度通常比性能更重要,并且是使用它们的最佳理由. ...

  8. java tostring格式_如何在Java中使用toString()获得数字的字符串表示形式?

    toString()方法中的一个重要方法对象类,它可用于返回一个对象的字符串或文本表示.对象类的toString()方法返回一个字符串,作为指定对象类的名称,后跟" @ "符号和对 ...

  9. JAVA中的MDC类_CMake - 用/ MT而不是/ MD编译

    我是cmake的新手(2.8.12.1),我在Windows上使用它生成项目文件,使用Visual Studio 2012构建cpp-netlib . 默认情况下,它使用/ MDd编译器开关进行编译 ...

最新文章

  1. java kafka 集群消费_kafka集群搭建和使用Java写kafka生产者消费者
  2. PL/SQL程序设计 第七章 包的创建和应用
  3. Docker的“谎言”
  4. Power-- 1.charge Fuel gauge
  5. [ZJJOI2013]K大数查询 整体二分
  6. 通过Java得到的时间与操作系统时间不一致,如何修改Java虚拟机时间?
  7. SQL Server便利名称
  8. Python_基于statsmodel包画Bland altman plot (Mean Difference Plot)用于预测结果分析
  9. 线性回归相关系数c语言,线性回归中相关系数.doc
  10. Vue脚手架安装教程
  11. 「计算机网络」五层因特网协议栈的简要介绍和分组名称
  12. 网易云课堂 python网络爬虫实战
  13. java基础 day12-FileInputStream类,文件的复制,缓冲流,Propertes文件,xml文件读写,网络socket编程(构建TCP客户端),内部类
  14. 【PS】ps基础绘画球体
  15. Vue项目实现点击图标拨打电话
  16. SIMATIC S7-300 Profibus通讯——(2)EM277与S7-300通讯
  17. HTML - label标签
  18. Mac中的番茄钟Just Focus——保持专注就对了
  19. 一文彻底搞懂go mod使用
  20. Webix UI JavaScript 10.0.6 Crack

热门文章

  1. 最强AE模板化视频制作引擎上线 VE 3.0七大体验更新
  2. 前端测试开发工具--mock 的使用
  3. 带有汉字的字符串截断出现半个“汉字”的解决方法-C语言源码
  4. 不得了,日本出版社竟是这样吸引死宅学编程的;谷歌推 TensorFlow Lite,移动开发者福音...
  5. 报错及解决 ‘gbk‘ codec can‘t decode byte 0x80 和raise ImportError(‘Failed to initialize: {0}‘.format(exc)
  6. 如何免费获取百度文档,简单实用,2013亲测
  7. 微信机器人换了服务器掉线,故障2:微信频繁掉线
  8. 润生集团2021年度业绩内部汇报 | 探索·前行·创造
  9. 华南师大 2017 年 ACM 程序设计竞赛新生初赛题解
  10. python爬虫,爬取表格数据