在字符串中查找素数和复合数

时间:2014-08-10 00:08:32

标签: php

我有以下随机生成的字符串:

$text = 's$bp4q1hsq3@g88nsjm5hr#i9#3078e2m';

我需要的是从中获取所有整数并将它们分类为素数或复合数并估算它们的总和。假设所有数字都是一位数,因此每个组的值缩短为只有四位:

$primes     = array(2, 3, 5, 7);
$composites = array(4, 6, 8, 9);

这意味着:Primes: 5, 3, 3, 2 = 13Composites: 4, 8, 8, 9, 8 = 37因为重复的数字也会计算在内。

我试过抓住这样的数字:

$asArray = str_split($text);

foreach ($asArray as $element) {
    if (is_int($element)) {
        echo $element;
    }
}

但它似乎最终出现在一个空白页面中。所以我的问题是如何找出字符串中的数字,然后将它们归类为素数或复合?

1 个答案:

答案 0 :(得分:3)

这里有素数和复合的总和:

$text = 's$bp4q1hsq3@g88nsjm5hr#i9#3078e2m';
$primes     = array(2, 3, 5, 7);

$sum_primes = $sum_composites = 0; 

preg_match_all("/\d/", $text, $matches);

foreach($matches[0] as $number)
{
    if (in_array($number, $primes))
        $sum_primes += $number; 
    else
        $sum_composites += $number; 
} 

echo "Sum of primes: ".$sum_primes."\n";
echo "Sum of composites: ".$sum_composites."\n";

会打印,

Sum of primes: 20
Sum of composites: 38