這個問題主要出錯在你的數(shù)學(xué)公式上,不知道你這個數(shù)學(xué)計算要表達什么。基本上你點擊之后都是執(zhí)行到這句:
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比烏蘭網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式烏蘭網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋烏蘭地區(qū)。費用合理售后完善,10余年實體公司更值得信賴。
if?(a*a*a+b*b*b+c*c*c!==i)
{break;}
然后跳出循環(huán)。改了一下,這樣是能夠執(zhí)行的,不過你需要完善的計算公式
水仙花.html
!doctype?html
html?lang="zh"
head
meta?charset="utf-8"?/
title水仙花/title
/head
body
??form
請輸入下區(qū)間:input?name="text"?type="text"?name="lownum"?id="lownum"?/
請輸入上區(qū)間:input?name="text"?type="text"?name="highnum"?id="highnum"?/
input?id="btn"?name="btn"?type="button"?value="計算"?/
/form
script?src="shuixianhua.js"/script
/body
/html
shuixianhua.js
window.onload?=?shuixianhua;
function?shuixianhua()
{
var?i,a,b,c,n;????//不知道你的變量?n?有什么作用
var?low_value?=?parseInt(document.getElementById("lownum").value);
var?high_value?=?parseInt(document.getElementById("highnum").value);
var?btn_node?=?document.getElementById("btn");
var?result_node?=?document.getElementById("btn");
for(i?=?low_value;?i?=?high_value;?i++)
{
a?=?Math.round(i/100);??????//或者?Math.floor()???Math.ceil()
b?=?Math.round(i%100/10);??//或者?Math.floor()???Math.ceil()
c?=?i%10;
if?(a*a*a+b*b*b+c*c*c!==i)
{break;}
else?
{
btn_node.onclick?=?function()
{
document.write("找到第"?+?n?+?"個數(shù):"?+?i);
}
}
}
}
(10,20)(20,30)如果只是判斷有交叉的到也簡單
(10,20)-的大小 20-10=10
(20,30)大小30-20=10
(10,20)(20,30)大小30-10=20
現(xiàn)在10+10=20,ok,他們沒有交叉
驗證:
(10,20)(19,30)
| |
10 11
(10+11)(30-10)
ok他們有交叉
其實,我的想法很簡單,既然是區(qū)間了,他就有個界限,你可以用他的界限來看看他是處在哪個區(qū)間,或者說是那幾個區(qū)間之間。
判斷(x,y)有沒有跟其他的區(qū)間交叉,
如果x10,說明他肯定沒有跟(10,20)交叉,也不會跟區(qū)間左界限10的區(qū)間交叉,
如果x10說明他有可能跟(10,20)交叉,當(dāng)然還要看y的大小了,
總之,就是比較x,y 跟幾個區(qū)間界限的大小,這樣就能判定他跟幾個區(qū)間的交叉。
在這里,還是要好好的考慮一下怎樣比較下來,比較的節(jié)省時間。
現(xiàn)在有兩個數(shù)組
var revenue = new Array([350],[450],[550],[650],[850],[1000],[1100],[1250],[1500]);
var reward = new Array([30],[40],[50],[100],[200],[240],[300],[400]);
如果收入大于350 小于 450 那么就獎勵30
如果收入大于450小于550,就獎勵50
要實現(xiàn)的效果跟Excel中的VlookUP函數(shù)比較像,想問下各位朋友,JS中如何有沒有類似的函數(shù),或者怎么寫最有效的判斷語句。
switch(a/10){
case 0:
case 1:
case 2: f("很差勁");break;
case 3
意思是:a/10的值是否等于0,1,2,是就執(zhí)行 f("很差勁");break;的意思是結(jié)束,不影響下面其他數(shù),如果你想0執(zhí)行一個,1也執(zhí)行一個的話:
case 0:f("很差勁");break;//沒break,默認是一組判斷
case 1: f("很差勁");break;
wei521su這種遍歷方法,
范圍在1到10000性能勉強可以接受, 范圍超過10000時耗時估計超過3分鐘,幾次提示“很慢建議停止腳步”;
從減少開辟變量和遍歷次數(shù)進行優(yōu)化,發(fā)現(xiàn)還是很卡;
再大范圍需要改進算法(eg:用哈希算法,將數(shù)據(jù)先吃到內(nèi)存),不然估計出不來了;
html
head
script type="text/javascript"
function getzhishu(num1,num2){
var sum = 0,j,indexMax;
if(num12 num2===2){
sum++;
document.write(2+"|");
}else if(num12 num2=3){
sum+=2;
document.write(2+"|");
document.write(3+"|");
}else if(num2=3 num1=3){
sum++;
document.write(3+"|");
}
for(var i=5;inum2;i++){
indexMax = parseInt(i/2);
for(j=2;jindexMax;j++){
if(i%j==0){
break;
}
}
if(indexMax == j){
sum++;
document.write(i+"|");
}
}
document.write("br"+sum);
}
getzhishu(1,10000);
/script
/head
bodyfont color="red"Hi!/font/body
/html
使用了一層hash改進的方法:
在IE6測試了100000條,在首次加載很慢,以后調(diào)用相當(dāng)?shù)乜欤?/p>
IE8需要設(shè)置IE最大運行腳本語句數(shù),調(diào)夠大,不然老是提示“是否停止腳本運行”;
html
head
script type="text/javascript"
var HashPool = function(size){
this.size = size;
this.pool = new Array();
this.loadPool(100000);
}
HashPool.prototype.loadPool = function(nr){
var sum=5,j,indexMax;
var arr = new Array();
this.pool.push(arr);
arr.push(2);
arr.push(3);
for(var i=5;i=nr;i++){
sum++;
if(sumthis.size){
sum=1;
arr = new Array();
this.pool.push(arr);
}
indexMax = parseInt(i/2);
for(j=2;jindexMax;j++){
if(i%j==0){
break;
}
}
if(indexMax == j){
arr.push(i);
}
}
}
HashPool.prototype.writeAll = function(){
var i,j;
for(i = 0; ithis.pool.length;i++){
for(j=0; jthis.pool[i].length;j++){
document.write(this.pool[i][j]+"\t");
}
}
}
HashPool.prototype.write = function(nl,nr){
var arr = this.getZhiShu(nl,nr);
for(var i = 0; iarr.length;i++){
document.write(arr[i]+"\t");
}
document.write("br總數(shù):"+arr.length);
}
HashPool.sliceLeft = function(arr,value){
/* //遍歷方式
if(arr[arr.length-1]value){
return new Array();
}
for(var i=0;iarr.length;i++){
if(value=arr[i]){
return arr.slice(i);
}
}
return [];*/
// 二分法
var index = HashPool.getIndex(arr,value);
if(index=0){
if(arr[index] === value || index === 0){
return arr.slice(index);
}
return arr.slice(index+1);
}
return [];
}
HashPool.sliceRight = function(arr,value){
/* //遍歷方式
if(arr[arr.length-1]value){
return arr;
}
for(var i=0;iarr.length;i++){
if(value===arr[i]){
return arr.slice(0,i+1);
}
if(valuearr[i]){
return arr.slice(0,i);
}
}
return [];*/
// 二分法
var index = HashPool.getIndex(arr,value);
if(index0){
return arr.slice(0,index+1);
}
return [];
}
HashPool.getIndex = function(arr,v){
if(arr[arr.length-1]v){
return arr.length-1;
}else if(arr[0]v){
return 0;
}
var l=0,r=arr.length-1,il;
while(l=r){
il=parseInt((r+l)/2);
if(arr[il]v arr[il+1]v){
return il;
}else if(arr[il]===v){
return il;
}else if(arr[il]v){
r = il - 1;
}else{
l = il + 1;
}
}
return -1;
}
HashPool.prototype.getZhiShu = function(nl,nr){
var i,j,indexMax,lIndex,rIndex;
var resultArr = new Array(),lastArr = this.pool[this.pool.length-1];
if(nr - nl 3*this.size){
if(nl1){
alert("最小值:"+nl+"1,程序默認設(shè)置最小值=1");
nl = 1;
document.getElementById("nleft").value = nl;
}
if(nrlastArr[lastArr.length-1]){
alert("最大值:"+nr+"加載的最大值:"+lastArr[lastArr.length-1]+",程序默認設(shè)置最大值=加載的最大值");
nr = lastArr[lastArr.length-1];
document.getElementById("nright").value = nr;
}
lIndex = parseInt(nl/this.size);
rIndex = parseInt(nr/this.size);
resultArr = resultArr.concat(HashPool.sliceLeft(this.pool[lIndex],nl));
for(i = lIndex+1;irIndex;i++){
resultArr = resultArr.concat(this.pool[i]);
}
resultArr = resultArr.concat(HashPool.sliceRight(this.pool[rIndex],nr));
}else{
if(nl2 nr===2){
resultArr.push(2);
}else if(nl2 nr=3){
resultArr.push(2);
resultArr.push(3);
}else if(nr=3 nl=3){
resultArr.push(3);
}
for(i=5;i=nr;i++){
indexMax = parseInt(i/2);
for(j=2;jindexMax;j++){
if(i%j==0){
break;
}
}
if(indexMax == j){
resultArr.push(i);
}
}
}
return resultArr;
}
var hashPool = new HashPool(500);
//hashPool.writeAll();
//hashPool.write(1,3000);
function submit(){
var nl = parseInt(document.getElementById("nleft").value);
var nr = parseInt(document.getElementById("nright").value);
var arr = hashPool.getZhiShu(nl,nr);
document.getElementById("printDiv").innerText = arr.join("|") +"\n總數(shù):"+arr.length;
}
/script
/head
bodyfont color="red"Hi! 質(zhì)數(shù)。br請輸入一個范圍:brbr
起始數(shù)字:input type="text" value="" id="nleft"/
終止數(shù)字:input type="text" value="" id="nright"/
input type="button" value="輸出" onclick="submit();"/
div id = 'printDiv'/div
/font/body
/html
你這個方法有點不對低效,給你寫個新的方法吧,隨便加減天數(shù)
//獲取時間方法
Date.prototype.Format?=?function?(fmt)?{
var?o?=?{
"M+":?this.getMonth()?+?1,?//月份
"d+":?this.getDate(),?//日
"h+":?this.getHours(),?//小時
"m+":?this.getMinutes(),?//分
"s+":?this.getSeconds(),?//秒
"q+":?Math.floor((this.getMonth()?+?3)?/?3),?//季度
"S":?this.getMilliseconds()?//毫秒
};
if?(/(y+)/.test(fmt))?fmt?=?fmt.replace(RegExp.$1,?(this.getFullYear()?+?"").substr(4?-?RegExp.$1.length));
for?(var?k?in?o)
if?(new?RegExp("("?+?k?+?")").test(fmt))?fmt?=?fmt.replace(RegExp.$1,?(RegExp.$1.length?==?1)???(o[k])?:?(("00"?+?o[k]).substr((""?+?o[k]).length)));
return?fmt;
}
//獲取當(dāng)前日期
var?starTime=?new?Date().Format("yyyy-MM-dd");//Format("輸入你想要的時間格式:yyyy-MM-dd,yyyyMMdd")
//結(jié)束時間
var?date?=?new?Date();//獲取當(dāng)前時間
date.setDate(date.getDate()+15);//設(shè)置天數(shù)?15?天
var?endTime?=?date.Format("yyyy-MM-dd");?//加完15天以后的時間
然后你就獲取 開始時間starTime和結(jié)束時間endTime了 ,結(jié)束時間可以隨便改了....
然后寫入你的DIV里就ok了
$('starDate').value=starTime;
$('endData').value=endTime;
不需要寫那么多 if啊 加0啊 之類的。