丑数--Ugly Number
来源:互联网 发布:mysql create 编辑:程序博客网 时间:2024/05/23 12:50
丑数--Ugly Number:整数因数分解只包含2,3,5的数
思路一:将待测整数不断的进行2,3,5的分解,如果最终的数为1,该数便是丑数。
思路二:利用筛选法求解丑数,2、3、5的倍数可能是丑数,在2、3、5倍数中去掉不是丑数的剩余的全是丑数。丑数的丑数倍数便是丑数,将丑数再乘上一个丑数,得到的结果一定会是丑数。采用这样的方法可以把一定范围的丑数全部得到。
import java.util.Scanner;/** * 因子只包含2、3、5的数称为丑数 * @author Administrator * */public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);while(sc.hasNext()) {//boolean isUglyNumber = IsUglyNumber(sc.nextInt());//System.out.println(isUglyNumber);int num = sc.nextInt();boolean[] isUgly = new boolean[num+1];ContinueUglyNumber(num,isUgly);for(int index = 2; index <= num; ++index) {if(isUgly[index])System.out.print(index+" ");}System.out.println();}}// 暴力求解,每个数都要进行计算。public static boolean IsUglyNumber(int num) {while(num%2 == 0) num /= 2;while(num%3 == 0) num /= 3;while(num%5 == 0) num /=5;if(num == 1) return true;return false;}// 筛选法进行丑数的查找public static void ContinueUglyNumber(int num,boolean[] isUgly) {isUgly[2] = true;isUgly[3] = true;isUgly[5] = true;int index2 = 1;int index3 = 1;int index5 = 1;while(index2*2<=num) {if(isUgly[index2]) isUgly[index2*2]=true;index2++;}while(index3*3<=num) {if(isUgly[index3]) isUgly[index3*3]=true;index3++;}while(index5*5<=num) {if(isUgly[index5]) isUgly[index5*5]=true;index5++;}}}
阅读全文
0 0
- ugly number(丑数)
- 丑数(Ugly Number)
- 丑数--Ugly Number
- 寻找丑数(Ugly Number)
- [C++]Ugly Number 丑数
- Ugly Number | Leetcode 丑数
- leetcode-Ugly Number(丑数)
- 263. Ugly Number 丑数
- Ugly Number(丑数)
- Ugly Number(丑数)
- 寻找丑数(Ugly Number)
- 寻找丑数(Ugly Number)
- 丑数Ugly Number查找算法
- 寻找丑数(Ugly Number)
- 寻找丑数(ugly number)
- [C++]Ugly Number II丑数2
- Ugly Number 寻找丑数 简单题
- leetcode 64.Ugly Number-丑数
- 关于uploadify插件上传之chome浏览器兼容问题的解决办法.
- 光流法介绍和跟踪应用
- Android WebView的一些设置
- shell整理(1)
- HEVC代码学习20:xPatternSearchFast函数
- 丑数--Ugly Number
- ARM-LINUX内核管理——内存页表
- 记录redis MD5数据库入库去重
- mysql使用kill命令解决死锁问题,杀死某条正在执行或没有响应的sql语句,
- 查找单链表中倒数第k个节点
- 无限极分类这个是不用递归查询的
- form表单校验
- 疯狂提交找错法(利用RuntimeError报错)
- cin、cin.get()和cin.getline()的用法和区别