小航的算法日记算术基本定理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小航的算法日记算术基本定理相关的知识,希望对你有一定的参考价值。


目录

  • ​​一、概念​​
  • ​​二、模板​​
  • ​​三、例题​​
  • ​​题:507. 完美数​​
  • ​​解:​​
  • ​​题:263. 丑数​​
  • ​​解:​​


详情请看英雄哥的专栏内容,以下为Java版

一、概念

​对于每个整数 n,都可以唯一分解成素数的乘积​​ 【算术基本定理:任何一个大于 1 的自然数可以分解成一些素数的乘积;并且在不计次序的情况下,这种分解方式是唯一的。】

二、模板

三、例题

题:507. 完美数

对于一个 ​​正整数​​​,如果它和除了它自身以外的所有 ​​正因子​​​ 之和相等,我们称它为 ​​「完美数」​​。

给定一个 整数​​n​​, 如果是完美数,返回 true;否则返回 false。

示例 1:

输入:num = 28
输出:true
解释:28 = 1 + 2 + 4 + 7 + 14

1, 2, 4, 7, 和 14 是 28 的所有正因子。
示例 2:

输入:num = 7
输出:true

提示:

1 <= num <= 108

解:

解题思路:​​模拟​

AC代码:

class Solution 
public boolean checkPerfectNumber(int num)
if(num == 1) return false; // num == 1特例
int sum = 1;
for(int i = 2; i *i <= num; i ++)
if(num % i == 0)
sum += i;
if(i * i < num)
sum += num / i;



return sum == num;

题:263. 丑数

给你一个整数 n ,请你判断 n 是否为 ​​丑数​​ 。如果是,返回 true ;否则,返回 false 。

丑数 就是只包含质因数 ​​2​​​、​​3​​​ 和/或​​5​​ 的正整数。

示例 1:

输入:n = 6
输出:true
解释:6 = 2 × 3

示例 2:

输入:n = 8
输出:true
解释:8 = 2 × 2 × 2

示例 3:

输入:n = 14
输出:false
解释:14 不是丑数,因为它包含了另外一个质因数 7 。

示例 4:

输入:n = 1
输出:true
解释:1 通常被视为丑数。

提示:

-231 <= n <= 231 - 1

解:

解题思路:

  1. 题目输入n还有负值和0,所以先将这些特判
  2. 分析得:
    【小航的算法日记】算术基本定理_质因数我们只需对n整除2,3,5,看n最终是否为1

AC代码:

class Solution 
public boolean isUgly(int n)
if(n <= 0) return false;
while(n % 2 == 0) n /= 2;
while(n % 3 == 0) n /= 3;
while(n % 5 == 0) n /= 5;
return n == 1;


以上是关于小航的算法日记算术基本定理的主要内容,如果未能解决你的问题,请参考以下文章

小航的算法日记因子数

小航的算法日记图论

小航的算法日记数组

小航的算法日记素数筛选

小航的算法日记变量交换算法

小航的算法日记大数计算