php分解质因数,用PHP可以实现将一个正整数分解为质因数的积么?

//判断是否为素数 若是素数返回1,否返回0

function checkSS($num){

if($num>0 && is_numeric($num) && is_int($num)){

$flag = 1;

for($i=2;$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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值