首页 > 编程语言 >【小航的算法日记】算术基本定理

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

时间:2022-11-29 10:39:18浏览次数:51  
标签:丑数 小航 示例 算术 sum 算法 num true 输入


目录

  • ​​一、概念​​
  • ​​二、模板​​
  • ​​三、例题​​
  • ​​题: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;
}
}


标签:丑数,小航,示例,算术,sum,算法,num,true,输入
From: https://blog.51cto.com/u_15895329/5894192

相关文章

  • 【小航的算法日记】最大公约数
    目录​​一、概念​​​​二、模板​​​​三、例题​​​​题:1979.找出数组的最大公约数​​​​解:​​​​题:LCP02.分式化简​​​​解:​​​​题:1819.序列中不同最大......
  • 【小航的算法日记】 线性枚举(一) - 最值算法
    目录​​一、概念​​​​二、模板​​​​三、例题​​​​题:485.最大连续1的个数​​​​解:​​​​题:1464.数组中两元素的最大乘积​​​​解:​​​​题:153.寻找旋......
  • 【小航的算法日记】因子和
    目录​​一、概念​​​​二、模板​​​​三、例题​​​​题:1390.四因数​​​​解:​​一、概念因子和二、模板看例题三、例题题:1390.四因数给你一个整数数组​​nums......
  • 【小航的算法日记】最小公倍数
    目录​​一、概念​​​​二、模板​​​​三、例题​​​​题:1819.序列中不同最大公约数的数目​​​​解:​​一、概念推导:由算术基本定理得:则,(1)X(2)得:即:二、模板给定两个......
  • 【小航的算法日记】变量交换算法
    目录​​一、概念​​​​二、模板​​​​三、例题​​​​题:面试题16.01.交换数字​​​​解:​​​​题:面试题05.07.配对交换​​​​解:​​内容摘自英雄哥,详情请看......
  • 【小航的算法日记】线性枚举(二) - 统计法入门
    目录​​一、概念​​​​二、模板​​​​三、例题​​​​题:1550.存在连续三个奇数的数组​​​​解:​​​​题:1295.统计位数为偶数的数字​​​​解:​​​​题:540.有......
  • 【小航的算法日记】进制转换(二) - 进阶
    目录​​一、概念​​​​二、模板​​​​三、例题​​​​题:202.快乐数​​​​解:​​​​题:168.Excel表列名称​​​​解:​​​​题:171.Excel表列序号​​​​解:​​......
  • 【小航的算法日记】进制转换(一) - 入门
    目录​​一、概念​​​​二、模板​​​​三、例题​​​​题:剑指Offer15.二进制中1的个数​​​​解:​​​​题:258.各位相加​​​​解:​​​​题:1290.二进制链表转......
  • 【小航的算法日记】字符串算法(二) - 字符串比较
    目录​​一、概念​​​​二、模板​​​​三、例题​​​​题:剑指Offer05.替换空格​​​​解:​​​​题:面试题10.05.稀疏数组搜索​​​​解:​​​​题:1763.最长的......
  • 【小航的算法日记】线段树
    本内容取经于:https://leetcode.cn/problems/my-calendar-i/solution/by-lfool-xvpv/一、概念概念区分:线段树解决的是「区间和」的问题,且该「区间」会被修改前缀和解决的是......