php 求水仙花數優化

2021-09-10 03:43:38 字數 4855 閱讀 7316

水仙花數是指乙個n位數(n>=3),它每個位上數字的n次冪之和等於它本身,n為它的位數。(例如:1^3+5^3+3^3 = 153)

水仙花數又稱阿姆斯特朗數。

三位的水仙花數有4個:153,370,371,407

四位的水仙花數有3個:1634,8208,9474

五位的水仙花數有3個:54748,92727,93084

六位的水仙花數有1個:548834

七位的水仙花數有4個:1741725,4210818,9800817,9926315

八位的水仙花數有3個:24678050,24678051,88593477

.....

最大的水仙花數有39位(115132219018763992565095597973971522401),十進位制自然數中的所有水仙花數共有88個。

php 求水仙花數

1.窮舉法求水仙花數,求3~7位的水仙花數

<?php

// 窮舉求水仙花數

function

narcissistic

($n)

// 儲存執行結果    $result = array();    $start = pow(10,$n-1);    $end = pow(10, $n);    for($i=$start; $i<$end; $i++)        if($total==$i)    }    return $result;}// 獲取當前microtime

function

getmicrotime

()// 設定超時時間為3600秒set_time_limit(3600);// 記錄開始執行時間$start = getmicrotime();// 執行求出3~7位的水仙花數

for($i=3; $i<=7; $i++)// 記錄執行結束時間$end = getmicrotime();// 輸出執行時間

echo

'run time:'.(float)($end - $start);// 列印結果

echo

'';print_r($result);echo

'

';?>

執行結果:

run time:82.230147838593array(    [3] => 153,370,371,407    [4] => 1634,8208,9474    [5] => 54748,92727,93084    [6] => 548834    [7] => 1741725,4210818,9800817,9926315)

2.優化演算法求水仙花數,求3~7位的水仙花數

優化方法:為pow 建立0-9 n階的對應表,減少計算次數

<?php

// 優化求水仙花數

function

narcissistic

($n)

// 儲存執行結果    $result = array();    // n階pow對應表    $powlist = getpow($n);    $start = pow(10,$n-1);    $end = pow(10, $n);    for($i=$start; $i<$end; $i++)        if($total==$i)    }    return $result;}// 獲取當前microtime

function

getmicrotime

()// 獲取n階pow對應表

function

getpow

($n)

return $powlist;}// 設定超時時間為3600秒set_time_limit(3600);// 記錄開始執行時間$start = getmicrotime();// 執行求出3~7位的水仙花數

for($i=3; $i<=7; $i++)// 記錄執行結束時間$end = getmicrotime();// 輸出執行時間

echo

'run time:'.(float)($end - $start);// 列印結果

echo

'';print_r($result);echo

'

';?>

執行結果:

run time:47.354328155518array(    [3] => 153,370,371,407    [4] => 1634,8208,9474    [5] => 54748,92727,93084    [6] => 548834    [7] => 1741725,4210818,9800817,9926315)

結果比對,優化後的演算法減少了42%的執行時間。

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!

水仙花數是指乙個n位數(n>=3),它每個位上數字的n次冪之和等於它本身,n為它的位數。(例如:1^3+5^3+3^3 = 153)

水仙花數又稱阿姆斯特朗數。

三位的水仙花數有4個:153,370,371,407

四位的水仙花數有3個:1634,8208,9474

五位的水仙花數有3個:54748,92727,93084

六位的水仙花數有1個:548834

七位的水仙花數有4個:1741725,4210818,9800817,9926315

八位的水仙花數有3個:24678050,24678051,88593477

.....

最大的水仙花數有39位(115132219018763992565095597973971522401),十進位制自然數中的所有水仙花數共有88個。

php 求水仙花數

1.窮舉法求水仙花數,求3~7位的水仙花數

<?php

// 窮舉求水仙花數

function

narcissistic

($n)

// 儲存執行結果    $result = array();    $start = pow(10,$n-1);    $end = pow(10, $n);    for($i=$start; $i<$end; $i++)        if($total==$i)    }    return $result;}// 獲取當前microtime

function

getmicrotime

()// 設定超時時間為3600秒set_time_limit(3600);// 記錄開始執行時間$start = getmicrotime();// 執行求出3~7位的水仙花數

for($i=3; $i<=7; $i++)// 記錄執行結束時間$end = getmicrotime();// 輸出執行時間

echo

'run time:'.(float)($end - $start);// 列印結果

echo

'';print_r($result);echo

'

';?>

執行結果:

run time:82.230147838593array(    [3] => 153,370,371,407    [4] => 1634,8208,9474    [5] => 54748,92727,93084    [6] => 548834    [7] => 1741725,4210818,9800817,9926315)

2.優化演算法求水仙花數,求3~7位的水仙花數

優化方法:為pow 建立0-9 n階的對應表,減少計算次數

<?php

// 優化求水仙花數

function

narcissistic

($n)

// 儲存執行結果    $result = array();    // n階pow對應表    $powlist = getpow($n);    $start = pow(10,$n-1);    $end = pow(10, $n);    for($i=$start; $i<$end; $i++)        if($total==$i)    }    return $result;}// 獲取當前microtime

function

getmicrotime

()// 獲取n階pow對應表

function

getpow

($n)

return $powlist;}// 設定超時時間為3600秒set_time_limit(3600);// 記錄開始執行時間$start = getmicrotime();// 執行求出3~7位的水仙花數

for($i=3; $i<=7; $i++)// 記錄執行結束時間$end = getmicrotime();// 輸出執行時間

echo

'run time:'.(float)($end - $start);// 列印結果

echo

'';print_r($result);echo

'

';?>

執行結果:

run time:47.354328155518array(    [3] => 153,370,371,407    [4] => 1634,8208,9474    [5] => 54748,92727,93084    [6] => 548834    [7] => 1741725,4210818,9800817,9926315)

結果比對,優化後的演算法減少了42%的執行時間。

php 求水仙花數優化

水仙花數是指乙個n位數 n 3 它每個位上數字的n次冪之和等於它本身,n為它的位數。例如 1 3 5 3 3 3 153 水仙花數又稱阿姆斯特朗數。三位的水仙花數有4個 153,370,371,407 四位的水仙花數有3個 1634,8208,9474 五位的水仙花數有3個 54748,92727,...

求水仙花數

找出水仙花數 首先我們需要了解水仙花數的概念 在數論中,水仙花數 narcissistic number 也稱為自戀數 自冪數 阿姆斯壯數或阿姆斯特朗數 armstrong number 是指一n位數,其各個數之n次方和等於該數。例如153 370 371及407就是三位數的水仙花數,其各個數之立方...

求水仙花 ghpython 水仙花數02

今天咱們繼續來看看老潘微博裡的乙個python小案例,求水仙花數,這個小案例在前兩天已經分享了,今天分享另一種方法,常言道只要思想不滑坡,方法總比困難多,而且今天的方法個人覺得更pythonic一點。水仙花數 四葉玫瑰數 五角星數 由於2位數的自冪數不存在,這裡直接從100遍歷到100000 for...