一种求正整数幂的高效算法详解

核心思想是
当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,用位与运算来代替求余判断奇偶,这样都要算法更加效率的多。

时间: 2013-06-02

C++初学者之根据输入的任何一个正整数,输出可能被表示的连续正整数

题目描述:一个正整数有可能可以被表示为 n(>=2) 个连续正整数之和,如: 15=1+2+3+4+5 15=4+5+6 15=7+8 请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列. 输入数据:一个正整数,以命令行参数的形式提供给程序. 输出数据:在标准输出上打印出符合题目描述的全部正整数序列,每行一个序列,每个序列都从该序列的最小正整数开始.以从小到大的顺序打印.如果结果有多个序列,按各序列的最小正整数的大小从小到大打印各序列.此外,序列不允许重复,序列内的整数用

正则文本框只能输入正整数

正则实现文本框只能输入正整数 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

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)

只能输入小于最大数且是正整数的脚本

最大数: 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

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正则表达式校验非零的正整数实例

话不多说,请看实例代码 <!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

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

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判断用户输入的是否为正整数(两种方法)

在项目开发中,需要使用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

JavaScript判断用户是否对表单进行了修改的方法

本文实例讲述了JavaScript判断用户是否对表单进行了修改的方法.分享给大家供大家参考.具体分析如下: 这段JS代码可以判断出用户是否对表单内容进行了修改,如果修改了表单,并退出浏览器,则会提醒用户是否要保存表单的内容,是非常有用的代码. function formIsDirty(form) { for (var i = 0; i < form.elements.length; i++) { var element = form.elements[i]; var type = element

javascript将url解析为json格式的两种方法

本文介绍了javascript将url解析为json格式的两种方法,分享给大家,具体如下: 方法一:最简单的方法,利用a标签来实现 function parseUrl(url){ var a=document.createElement('a'); a.href=url; return { protocol:a.protocol.replace(':',''), hostname:a.hostname, port:a.port, path:a.pathname, query:(()=>{ var

判断iPhone的WiFi是否打开的两种方法

判断WiFi是否连接可以使用Reachability进行判断,那么WiFi是否打开应该怎么判断呢? 下面是两种完全基于不同思路的方法: 方法一: 使用SystemConfiguration.framework 库进行判断 #import <ifaddrs.h> #import <net/if.h> #import <SystemConfiguration/CaptiveNetwork.h> - (BOOL) isWiFiEnabled { NSCountedSet *

JavaScript 判断用户输入的邮箱及手机格式是否正确

复制代码 代码如下: /* * 功能:判断用户输入的邮箱格式是否正确 * 传参:无 * 返回值:true or false */ function form_check() { var email = document.getElementById("email").value; //获取邮箱地址 //判断邮箱格式是否正确 if(!/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(email)) { alert("邮箱格

js中判断文本框是否为空的两种方法

复制代码 代码如下: //用户名非空验证 function checkUserName(){ var name = document.myform.txtUser; //在这里我认为: name 代表的name 为 txtUser 的文本框 if(name.value.length==0){ alert("请输入用户名"); name.focus(); return false; }else{return true;} } //密码非空验证+确认验证 function checkPas

PHP代码判断设备是手机还是平板电脑(两种方法)

现在移动互联网越来越发达,很多的网站都普及了手机端浏览,为了更好的让网页在手机端显示,我们都选择了使用CSS媒体查询制作响应式模版,但这也有弊端,例如某些网站的结构是CMS类型的,太多的内容要显示,而使用CSS媒体查询设计响应式,只会隐藏但还是加载了,为了让手机端更快速的显示出内容,我们可以使用这个PHP判断手机设备代码,使用这个代码可以很方便的显示或不显示自定义的内容. 在做WEB开发的时候经常会需要用到对移动设备的页面匹配,当然可以直接把网站做成响应式的,但如果不想这么做的话,可以使用PHP

javascript中取前n天日期的两种方法分享

方法一: 复制代码 代码如下: var d = new Date(); d = new Date(d.getFullYear(),d.getMonth(),d.getDate()-n); 方法二: 复制代码 代码如下: var now = new Date(); now.setTime(now.getTime()-n*24*60*60*1000);

js中判断用户输入的值是否为空的简单实例

在js中判断用户输入的值是否为空,这是大家用得非常多的. 这没有什么好写的. 而我却写了. 原因只是自以为是的认为我的这些代码写得不错, 供大家参考一下. 这是摘自的我一个项目的中的用户注册页面.对于大多数人来说,这都几乎是100%经历过的.贴代码吧,这些代码都是用js写的. 不难,很容易看懂. 看的时候,只要区别两个js类就行了.前台页面代码:reguser.aspx 复制代码 代码如下: <%@ Page language="c#" Codebehind="RegU

判断用户输入的银行卡号是否正确的方法(基于Luhn算法的格式校验)

开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验 下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验): iOS代码: /** * 银行卡格式校验 * * @param cardNo 银行卡号 * * @return */ + (BOOL) checkCardNo:(NSString*) cardNo{ int oddsum = 0; //奇数求和 int evensum = 0; //偶数求和 int al