A. 在php中怎麼用函數實現 輸出1-100 中的質數(素數,只能被1和本身整除的數)
用函數實現1-100中素數的演算法如下:
<?php //定義函數
function sushu() {
//求100以內質數
for ($i = 1; $i <= 100; $i++)
{
$k = 0;
for ($j = 1; $j < $i; $j++) {
if ($i % $j == 0) { $k++;}}
if ($k == 1) {
echo $i;
echo " ";
}
}
}
sushu(); // 調用函數
?>
PHP相關知識拓展:
PHP 用戶定義函數:
除了內建的 PHP 函數,我們可以創建我們自己的函數。
函數是可以在程序中重復使用的語句塊。
頁面載入時函數不會立即執行。
函數只有在被調用時才會執行。
自定義函數方法:
<?php
function writeMsg() {
echo "Hello world!";
}
writeMsg(); // 調用函數
?>
B. php編程輸出100以內的素數
素數就是只能被 1 和它本身所整除的數。從2~100,逐個判斷素數,如果是素數,就列印,否則不列印。
源代碼如下:
#coding:utf-8
for i in range(2,101):
fg = 0
for j in range(2,i-1):
if i%j == 0:
fg = 1
break
if fg == 0:
print(i)
i = 2
c = []
while i <= 100:
j = 2
while j <= i:
if i % j == 0:
if i == j:
c.append(i)
break
j += 1
i += 1
print(c)
(2)php判斷素數擴展閱讀
a~b之間的素數的代碼
def su(a,b):
for i in range(a,b):
n = False #默認不是素數,如果是素數,跳出循環
for j in range(2,int(i**0.5)):
if i%j == 0:
n = True
break
if n == False:
print(i,end=" ")
su(100,200)
C. php判斷一個數是否為素數
functionselectnum($num){
for($j=2;$j<sqrt($num);$j++){
if($num%$j==0){
returnfalse;
}
}
returntrue;
}
判斷是不是 素數 ,若 返回true 就是 素數,因為 若一個數能被整除,那肯定就不是素數!!!
加平方根驗證(sqrt)的目的,是為了優化性能,因為:
如果它不是質數,那麼它應該可以表示成兩個非1非自身的數相乘。
而這兩個數,必然有一個大於平方根一個小於平方根,或者兩個都等於平方根。
下面是 獲取 1000000 內 所有的 素數 ,在PHP7下 能做到2.3秒, 在5下 不到4秒!
publicfunctiontest()
{
$start_time=microtime(true);
set_time_limit(0);
$num_max=1000000;
$arr=[];
for($i=1;($i*6)<=$num_max;$i++){
$base=$i*6;
$num=$base-1;
$sta=$this->testnum($num);
if($sta){
$arr[$num]=1;
}
$num=$base+1;
$sta=$this->testnum($num);
if($sta){
$arr[$num]=1;
}
}
$end=microtime(true);
$zong=$end-$start_time;
echo'開始'.$start_time.'<br/>';
echo'結束'.$end.'<br/>';
echo'用時'.$zong.'<br/>';
echo'共'.count($arr).'個素數';
}
functiontestnum($num){
for($j=2;$j<sqrt($num);$j++){
if($num%$j==0){
returnfalse;
}
}
returntrue;
}
D. php篩選法素數
$d<=$sqrt 為什麼還要加上這個條件?
減少循環的次數。
/////////不是很理解這個continue2是什麼意思?
跳出2重循環。也就是跳到for($i=2; $i<=$n; ++$i) 這個循環
E. PHP中關於判斷一個數是否是素數的表單操作,有個地方不知道該怎麼改
for語句缺少步長,你的代碼會進入死循環,下面的語句:
for($i=1;$i<=$n1;){
應該修改為:
for($i=1;$i<=$n1;$i++){
F. PHP模塊化素數驗證
//素數的驗證與獲取
//參數: 1.最小值(>=2) 2.最大值(>最小值) 3.返回數組指針,當參數不合法時不返回
function matchOne($min,$max,&$retData){
if(is_numeric($min) && $min > 1 && $min < $max && is_numeric($max)){
$data = array();
for($i = $min;$i<$max;$i++){
$c=0;
for($j=1;$j<=$i;$j++)
{
if(($i%$j)==0)
{
$c++;
}
}
if($c==2)
{
$data[] = $i;
}
}
$retData = $data;
return true;
}else{
return false;
}
}
function prt_array($value,$key){
if(is_array($value))
{
echo "[$key] => \n".print_m($value);
}else{
echo "[$key] => $value \n";
}
}
//print_r 函數的實現函數
function print_m($var){
if(is_array($var))
{
echo "Array\n(\n";
array_walk($var,"prt_array");
echo "\n)";
}
}
if($_GET['do'] == 'query')
{
$min = $_GET['minInput'];
$max = $_GET['maxInput'];
matchOne($min,$max ,&$data );
if(matchOne($min,$max ,&$data ))
{
print_m($data);
}else{
echo '輸入的必須是數字,或者大於1且最大值大於最小值的整數。';
}
}
echo '</br>';
echo '<form><input name="do" type="hidden" value="query"/>最小值:';
echo '<input name="minInput"/>最大值:<input name="maxInput"/><p>';
echo '<input type="submit" value="提交"/></p></form>';
G. 在PHP中,用自定義函數,用於判斷輸入的整數是否為質數。並輸出1-100之間所有的
//顯示1-100之間所有質數 並求和
function zishu() {
$sum=0;
for ($i = 1; $i <= 100; $i++)
{
$k = 0;
for ($j = 1; $j < $i; $j++)
{
if ($i % $j == 0) {
$k++;
}
}
if ($k == 1) {
echo $i;
echo " ";
$sum=$sum+$i;
}
}
echo '<br>';
echo '1-100所有質數和為:'.$sum;
}
zishu(); // 調用函數
H. 求救貼怎麼用PHP來判斷一個數是質數還是合數
質數是除了1和它本身之外,不能被其他數整除的正整數,又稱素數。
質數和合數的區別在於因數的個數,質數只有2個因數,合數有多於2個因數。
除1,0以外不是質數的正整數就是合數。
"0"「1」既不是質數也不是合數。
把情況想全了就除 判斷余數
I. 如何用PHP判斷 1-20中有多少個素數
function isprime($num)
{
for($i=2;$i<$num;$i++)
{
if($num % $i == 0)
return false;
}
return true;
}
function totprime($num)
{
$tot=0;
for($i=2;$i<=$num;$i++)
{
if(isprime($i))
{
$tot += 1;
}
}
return $tot;
}
echo(totprime(20));