一种求正整数幂的高效算法详解
核心思想是
当n为偶数时,a^n = a^n/2 × a^n/2
当n为奇数时,a^n = a^(n-1)/2 × a^(n-1)/2 × a
代码如下:
代码如下:
public class Power {
public static void main(String[] args) {
System.out.println(power(5.5,5));
}
private static double power(double base, int exponent) {
if (exponent == 0)
return 1;
if (exponent == 1)
return base;
double result = power(base, exponent >> 1);
result *= result;
if ((exponent & 0x1) == 1)
result *= base;
return result;
}
}
代码中还使用右移运算来代替除以2,用位与运算来代替求余判断奇偶,这样都要算法更加效率的多。
相关推荐
-
JS只能输入正整数的简单实例
如下所示: <html> <head> <title>只能输入正整数</title> </head> <body> 兑换数量:<input type="text" ID="txtNumber" Width="50px" onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]
-
C++求四个正整数最大公约数的方法
本文实例讲述了C++求四个正整数最大公约数的方法.分享给大家供大家参考,具体如下: /* * 作 者: 刘同宾 * 完成日期:2012 年 11 月 16 日 * 版 本 号:v1.0 * * 输入描述: 输入四个正整数,输出其最大公约数. * 问题描述: * 程序输出: * 问题分析:略 * 算法设计:略 */ #include<iostream> using namespace std; int f(int,int); int g(int,int,int,int); int main()
-
JQuery判断正整数整理小结
var totalPage = document.getElementById("totalPage").value.trim();//获取总页 var reg=/^[1-9]\d*$/; //由 1-9开头 的正则表达式 //先判断是否为整数 在判断 是否在 1-总页 整数范围之内 if(reg.test(searchBox)){ if(parseInt(searchBox) > 0 && parseInt(searchBox) <= totalPage)
-
JavaScript正则表达式校验非零的正整数实例
话不多说,请看实例代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></titl
-
C++初学者之根据输入的任何一个正整数,输出可能被表示的连续正整数
题目描述:一个正整数有可能可以被表示为 n(>=2) 个连续正整数之和,如: 15=1+2+3+4+5 15=4+5+6 15=7+8 请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列. 输入数据:一个正整数,以命令行参数的形式提供给程序. 输出数据:在标准输出上打印出符合题目描述的全部正整数序列,每行一个序列,每个序列都从该序列的最小正整数开始.以从小到大的顺序打印.如果结果有多个序列,按各序列的最小正整数的大小从小到大打印各序列.此外,序列不允许重复,序列内的整数用
-
只能输入小于最大数且是正整数的脚本
最大数: 98765 具体功能自己测试咯 :) /* 只允许输入数字 */ function numInputCheck(o,m){ var d; if(',48,49,50,51,52,53,54,55,56,57,96,97,98,99,100,101,102,103,104,105,8,9,13,'.indexOf(',' + event.keyCode + ',')==-1){ event.returnValue=null; } if(m!=null){ d = event.keyCod
-
jquery 正整数数字校验正则表达式
限制用户输入的内容可以有如下做法: $("#id").keyup(fucntion(){//当键盘按下之后立即校验,并替换当前操作框中的内容 var value = $(this).val(); $(this).val(value.replace(reg,replace_data)); }); 最常见的就是限制用户只能录入数字 var reg = new RegExp("[^0-9]","g"); [^0-9]表示非0-9之间的数字,g表示全局
-
JavaScript正则表达式校验非正整数实例
话不多说,跟小编一起来看看吧 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></t
-
使用JavaScript判断用户输入的是否为正整数(两种方法)
在项目开发中,需要使用JavaScript验证用户输入的是否为正整数. 方法一: var type="^[0-9]*[1-9][0-9]*$"; var r=new RegExp(type); var flag=r.test(subjectHour.value); if(!flag){ alert("课时应为正整数"); subjectHour.focus(); return false; } 方法二: var type="^[0-9]*[1-9][0-9
-
正则文本框只能输入正整数
正则实现文本框只能输入正整数 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
-
js判断输入是否为正整数、浮点数等数字的函数代码
1.下面列出了一些判读数值类型的正则表达式 复制代码 代码如下: /^\d+$/ //非负整数(正整数 + 0) /^[0-9]*[1-9][0-9]*$/ //正整数 /^((-\d+)|(0+))$/ //非正整数(负整数 + 0) /^-[0-9]*[1-9][0-9]*$/ //负整数 /^-?\d+$/ //整数 /^\d+(\.\d+)?$/ //非负浮点数(正浮点数 + 0) /^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0
随机推荐
- JavaScript截取指定长度字符串点击可以展开全部代码
- java读取csv文件示例分享(java解析csv文件)
- iOS动画之向右拉的抽屉3D效果
- php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
- JavaScript中的console.group()函数详细介绍
- mysql_num_rows VS COUNT 效率问题分析
- 基于mysql的论坛(3)
- WordPress开发中自定义菜单的相关PHP函数使用简介
- MFC对话框自定义消息映射的方法
- MySQL 读写分离实例详解
- Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
- JS+CSS实现带关闭按钮DIV弹出窗口的方法
- jQuery 实现图片的依次加载图片功能
- 独辟蹊径:实现Linux下的局域网远程接入
- Java8新特性之Base64详解_动力节点Java学院整理
- python subprocess 杀掉全部派生的子进程方法
- Android基础之使用Fragment适应不同屏幕和分辨率(分享)
- java使用文件流实现查看下载次数
- 深入学习java并发包ConcurrentHashMap源码
- 实用的Vue开发技巧