当前位置:首页 > PHP

php实现丑数

2026-02-16 01:21:22PHP

丑数定义

丑数是指只包含质因数2、3或5的正整数。1通常被视为第一个丑数。例如,前10个丑数为1, 2, 3, 4, 5, 6, 8, 9, 10, 12。

php实现丑数

判断丑数的方法

要判断一个数是否为丑数,可以不断将其除以2、3、5,直到无法整除为止。如果最终结果为1,则该数是丑数;否则不是。

function isUgly($num) {
    if ($num <= 0) {
        return false;
    }
    $factors = [2, 3, 5];
    foreach ($factors as $factor) {
        while ($num % $factor == 0) {
            $num = $num / $factor;
        }
    }
    return $num == 1;
}

生成第n个丑数

要生成第n个丑数,可以使用动态规划的方法。维护三个指针分别对应乘以2、3、5的最小丑数,每次选择最小的乘积作为下一个丑数。

function nthUglyNumber($n) {
    $uglyNumbers = array_fill(0, $n, 0);
    $uglyNumbers[0] = 1;
    $i2 = $i3 = $i5 = 0;
    $nextMultipleOf2 = 2;
    $nextMultipleOf3 = 3;
    $nextMultipleOf5 = 5;

    for ($i = 1; $i < $n; $i++) {
        $nextUglyNumber = min($nextMultipleOf2, $nextMultipleOf3, $nextMultipleOf5);
        $uglyNumbers[$i] = $nextUglyNumber;

        if ($nextUglyNumber == $nextMultipleOf2) {
            $i2++;
            $nextMultipleOf2 = $uglyNumbers[$i2] * 2;
        }
        if ($nextUglyNumber == $nextMultipleOf3) {
            $i3++;
            $nextMultipleOf3 = $uglyNumbers[$i3] * 3;
        }
        if ($nextUglyNumber == $nextMultipleOf5) {
            $i5++;
            $nextMultipleOf5 = $uglyNumbers[$i5] * 5;
        }
    }
    return $uglyNumbers[$n - 1];
}

示例用法

// 判断一个数是否为丑数
var_dump(isUgly(6)); // 输出: bool(true)
var_dump(isUgly(14)); // 输出: bool(false)

// 获取第n个丑数
echo nthUglyNumber(10); // 输出: 12

注意事项

  • 输入为负数或0时,直接返回false。
  • 动态规划方法的时间复杂度为O(n),空间复杂度为O(n)。

php实现丑数

标签: php
分享给朋友:

相关文章

php 实现文件下载

php 实现文件下载

实现文件下载的基本方法 使用 PHP 实现文件下载的核心是通过设置 HTTP 头部信息,强制浏览器将文件作为附件下载而非直接显示。以下是一个基础实现示例: $file_path = '/path/t…

php怎么实现登录功能

php怎么实现登录功能

数据库准备 创建用户表存储登录信息,通常包括用户名、密码(需加密)等字段。示例SQL: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY…

php 实现排序

php 实现排序

PHP 实现数组排序的方法 PHP 提供了多种内置函数和方法来实现数组排序,适用于不同的排序需求。以下是一些常见的排序实现方式: 使用 sort() 函数对数组进行升序排序 sort() 函数对数组…

php实现博客

php实现博客

使用PHP实现博客系统 数据库设计 创建数据库表存储博客文章和用户信息。常见的表包括posts(文章)和users(用户)。 CREATE TABLE users ( id INT AUT…

php实现一个

php实现一个

PHP 实现一个简单的计算器 创建一个基本的计算器,支持加、减、乘、除运算。以下是一个完整的实现代码示例: <?php $result = ""; if ($_SERVER["REQUEST_…

php 函数实现

php 函数实现

PHP 函数实现基础 PHP 函数的定义使用 function 关键字,后跟函数名和参数列表。函数名不区分大小写,但建议保持一致。 function functionName($param1, $p…