這篇文章主要介紹了php找出指定范圍內回文數且平方根也是回文數的方法,實例分析了php判斷回文的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
本文實例講述了php找出指定范圍內回文數且平方根也是回文數的方法。分享給大家供大家參考。具體如下:
一、要求:
給出兩個數值X和Y,統計在這個區間里的回文數,并且要求它們的平方根也是回文數。其中 1<= x <= y < 10 14
二、解決方法:
- <?php
- error_reporting(E_ALL);
- ini_set("display_errors", 1);
- //避免超時
- set_time_limit(0);
- $t1=microtime();
- function isPlalindrome($num){
- $str="$num";
- $len=strlen($num);
- $k = intval($len/2) + 1;//獲取中間位數
- for($j=0;$j<$k;$j++){
- if($str{$j}!=$str{$len-1-$j}){
- return false;
- }
- }
- return true;
- }
- function showPlalindrome($min,$max){
- //因為要計算在$min,$max間的回文數且其自身平方根也是回文數
- //所以相當于求一sqrt($min)~sqrt($max)間數
- //其平方在$min~$max間也是回文數
- //$min~$max是連續正整數,所以可以這樣縮小很多計算量,否則……
- $start=sqrt($min);
- $end=sqrt($max);
- for($i=$start;$i<$end;$i++){
- if(isPlalindrome($i) &&isPlalindrome($n=$i*$i) ){
- echo $n." <br/>";
- }
- }
- }
- showPlalindrome(1,100000000000000);
- $t2=microtime();
- $starttime = explode(" ",$t1);
- $endtime = explode(" ",$t2);
- $totaltime = $endtime[0]-$starttime[0]+$endtime[1]-$starttime[1];
- $timecost = sprintf("%s",$totaltime);
- echo "頁面運行時間: $timecost 秒";
- ?>
希望本文所述對大家的php程序設計有所幫助。
新聞熱點
疑難解答