小航的算法日记算术基本定理
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
解:
解题思路:
- 题目输入n还有负值和0,所以先将这些特判
- 分析得:
我们只需对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;
以上是关于小航的算法日记算术基本定理的主要内容,如果未能解决你的问题,请参考以下文章