本文实例讲述了php找出指定范围内回文数且平方根也是回文数的方法。分享给大家供大家参考。具体如下:
一、要求:
给出两个数值X和Y,统计在这个区间里的回文数,并且要求它们的平方根也是回文数。其中 1<= x <= y < 10 14
二、解决方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
<?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程序设计有所帮助。