php输出1000以内质数(素数)示例

yizhihongxing

要输出1000以内的质数,可以使用以下的php代码:

<?php
for ($i = 2; $i <= 1000; $i++) {
    $isPrime = true;
    for ($j = 2; $j < $i; $j++) {
        if ($i % $j == 0) {
            $isPrime = false;
            break;
        }
    }
    if ($isPrime) {
        echo $i . " ";
    }
}
?>

这个代码使用了两个for循环。外层的for循环从2开始,遍历到1000。内层的for循环从2开始,一直遍历到$i-1。如果在内层循环中发现$i可以被$j整除,说明$i不是质数,将$isPrime标志设置为false。如果内层循环遍历完成后$isPrime仍然为true,说明$i是质数,将其输出。

我们可以在这段代码中添加一些注释,让代码更易于理解:

<?php
for ($i = 2; $i <= 1000; $i++) {
    // 假设$i是质数
    $isPrime = true;
    for ($j = 2; $j < $i; $j++) {
        // 如果发现$i可以被$j整除,说明$i不是质数
        if ($i % $j == 0) {
            $isPrime = false;
            break;
        }
    }
    // 如果在内层循环中没有发现$i可以被整除的数,则$i是质数,将其输出
    if ($isPrime) {
        echo $i . " ";
    }
}
?>

这段代码可以输出1000以内的质数,结果如下:

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499 503 509 521 523 541 547 557 563 569 571 577 587 593 599 601 607 613 617 619 631 641 643 647 653 659 661 673 677 683 691 701 709 719 727 733 739 743 751 757 761 769 773 787 797 809 811 821 823 827 829 839 853 857 859 863 877 881 883 887 907 911 919 929 937 941 947 953 967 971 977 983 991 997

另一种输出1000以内质数的方法是使用筛法(埃氏筛法或欧拉筛法)。

  • 埃氏筛法:先把2~n的各个数放入到一个数组中,然后从2开始,将每个素数的倍数都标记成合数。依次遍历素数的倍数,直到找到所有素数。具体实现可以参考下面的代码:
<?php
function eratosthenes($n) {
    $numbers = range(2, $n);
    $primes = [];

    while (!empty($numbers)) {
        $prime = array_shift($numbers);
        array_push($primes, $prime);

        $numbers = array_filter($numbers, function($value) use ($prime) {
            return ($value % $prime != 0);
        });
    }

    return $primes;
}

$primes = eratosthenes(1000);
echo implode(' ', $primes);
?>
  • 欧拉筛法:和埃氏筛法类似,但是能够过滤掉重复的数。具体实现可以参考下面的代码:
<?php
function euler($n) {
    $is_prime = array_fill(2, $n - 1, true);
    $primes = [];

    for ($i = 2; $i <= $n; $i++) {
        if ($is_prime[$i]) {
            array_push($primes, $i);
        }

        foreach ($primes as $prime) {
            $result = $i * $prime;
            if ($result > $n) {
                break;
            }
            $is_prime[$result] = false;

            if ($i % $prime == 0) {
                break;
            }
        }
    }

    return $primes;
}

$primes = euler(1000);
echo implode(' ', $primes);
?>

这两种方法的结果和第一种方法是相同的。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php输出1000以内质数(素数)示例 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • 学习php设计模式 php实现访问者模式(Visitor)

    学习PHP设计模式是我们提高PHP技能的一个必要过程。设计模式是一种通用解决方案,用于解决常见的面向对象编程问题。本文将讲解PHP实现访问者模式的完整攻略,包括对访问者模式的介绍、访问者模式的实现步骤,以及基于PHP实现的两个示例说明。 什么是访问者模式? 访问者模式是一种行为型设计模式,它使得你能够在不改变元素类(被访问的对象)的前提下,定义作用于这些元素…

    PHP 2023年5月27日
    00
  • php中拷贝构造函数、赋值运算符重载

    在 PHP 中,拷贝构造函数和赋值运算符重载是对象复制和赋值的两种方式。拷贝构造函数是在对象被复制时执行,并用于创建一个新的对象。赋值运算符重载是在对象被赋值时执行,并用于将一个对象的值赋给另一个对象。 拷贝构造函数 拷贝构造函数在对象被复制时执行,并用于创建一个新的对象。以下是一个使用拷贝构造函数的示例: class Person { public $na…

    PHP 2023年5月25日
    00
  • 在Linux(Ubuntu)下搭建PHP环境的操作步骤

    下面是在Ubuntu下搭建PHP环境的详细步骤: 1. 安装 PHP 打开终端,输入以下命令: sudo apt-get update sudo apt-get install php 这将会自动安装 PHP 和其它相关组件。安装完成后,可以通过以下命令查看 PHP 版本: php -v 2. 安装 Apache Apache 是一个流行的 Web 服务器,…

    PHP 2023年5月24日
    00
  • 使用cluster 将自己的Node服务器扩展为多线程服务器

    使用cluster模块可以将Node服务器扩展为多线程服务器。在使用cluster模块时,需要在主进程中创建子进程,然后将子进程绑定到服务器端口。然后,每个子进程都可以监听到相同的端口,接收到的请求将会均匀分发给每个子进程。 下面是使用cluster模块将Node服务器扩展为多线程服务器的完整攻略: 1. 安装cluster模块 使用npm安装cluster…

    PHP 2023年5月27日
    00
  • 用PHP编写和读取XML的几种方式

    当需要处理和传输数据时,XML是一种常用的数据格式。PHP为处理XML数据提供了多种方式。以下是几种使用PHP编写和读取XML文件的方法: 1. 使用SimpleXML SimpleXML 是一种在 PHP 5 及以上版本中自带的解析 XML 文件的 API。它可以将 XML 文件转换为对象,便于读取和处理。使用SimpleXML的步骤如下: a. 加载XM…

    PHP 2023年5月26日
    00
  • php 运行效率总结(提示程序速度)

    下面是“php 运行效率总结(提示程序速度)”的详细攻略。 简介 在 PHP 开发过程中,程序效率对于性能和用户体验都是至关重要的。当程序运行效率很低时,用户就会感受到网站响应延迟、页面加载速度慢等问题。因此,我们需要在编写 PHP 代码时合理使用优化技巧,以达到最优的性能表现。 提升 PHP 程序效率的技巧 1. 避免使用 eval 函数 eval 函数能…

    PHP 2023年5月23日
    00
  • 实例讲解PHP设计模式编程中的简单工厂模式

    下面是关于“实例讲解PHP设计模式编程中的简单工厂模式”的完整攻略: 1. 简单工厂模式的概念 简单工厂模式(Simple Factory Pattern)是一种常用的工厂模式,又叫静态工厂方法模式(Static Factory Method Pattern)。 简单工厂模式的作用是根据不同的参数,返回不同类的实例。这样可以把对象的创建和客户代码的调用分离开…

    PHP 2023年5月23日
    00
  • PHP之浮点数计算比较以及取整数不准确的解决办法

    PHP之浮点数计算比较以及取整数不准确的解决办法 在PHP浮点数计算比较以及取整数时,经常会遇到计算精度不准确的问题,这是由于浮点数的储存方式以及二进制计算中存在的精度问题导致的。本次攻略将为大家介绍如何在PHP中处理浮点数计算精度问题。 1. 浮点数比较 在PHP中,浮点数比较不能直接使用“==”或“!=”运算符,若要对浮点数进行比较,应该使用“>”…

    PHP 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部