亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用PHP可以實現將一個正整數分解為質因數的積么?

用PHP可以實現將一個正整數分解為質因數的積么?

PHP
黑螃蟹 2016-10-26 11:52:37
例如給一個參數90 ,得出結果2*3*3*5
查看完整描述

3 回答

?
黑螃蟹

TA貢獻2條經驗 獲得超0個贊

新手上路,自己嘗試寫了寫,也得到結果了,但總覺得不應該如此復雜,所以還請大神指正,謝謝

查看完整回答
反對 回復 2016-10-26
?
黑螃蟹

TA貢獻2條經驗 獲得超0個贊

//判斷是否為素數 若是素數返回1,否返回0
function checkSS($num){
? ?if($num>0 && is_numeric($num) && is_int($num)){
? ? ? ?$flag = 1;
? ? ? ?for($i=2;$i<$num;$i++){
? ? ? ? ? ?if($num % $i == 0 && $num!=2){
? ? ? ? ? ? ? ?$flag = 0;
? ? ? ? ? ?}
? ? ? ?}
? ?}else{
? ? ? ?echo "請輸入非0整數";
? ? ? ?exit;
? ?}
? ?return $flag;
}
//將非0整數分解為質因數之積
function splitNum($n){
? ?if(checkSS($n)){return $n."*1";}
? ?for($i=2;$i<abs($n);$i++){
? ? ? ?if($n % $i == 0 && checkSS($i)){
? ? ? ? ? ?$arr[] = $i; ? ?//得到該數所有不重復的質因數組成的數組
? ? ? ?}
? ?}
? ?$res = array_product($arr);//該數字所有質因數之積
if($res == $n){
? ? return implode('*',$arr); //若這個結果等于原數字,則以*號拆分數組為字符串得到結果 ?如:30 = 2*3*5
}elseif(checkSS(abs($n/$res))){
? ? return implode('*',$arr)."*".$n/$res;//若原數字除以結果得到的是個質數,則直接乘上這個數 如: 90 = 2*3*5 *3
}else{
? ? return implode('*',$arr)."*".splitNum($n/$res);//否則對原數字除以結果再進行一次分解 如: 180 = 2*3*5 *{6=(2*3)};
}
}
echo splitNum(54);//2*3*3*3

查看完整回答
反對 回復 2016-10-26
  • 3 回答
  • 0 關注
  • 1830 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號