1. 程式人生 > >c++程式碼判斷給定數字是否為醜數

c++程式碼判斷給定數字是否為醜數

題目描述

只包含因子2,3,5的正整數被稱作醜數,比如4,10,12都是醜數,而7,23,111則不是醜數,另外1也不是醜數。請編寫一個函式,輸入一個整數n,能夠判斷該整數是否為醜數,如果是,則輸出True,否則輸出False。

輸入描述

每行輸入一個正整數 n

1 <= n<= 1000000

輸出描述

對於每一行輸入,輸出其是否為醜數,是則輸出True,否則輸出False

樣例輸入

4
7
12

樣例輸出

True
False
True
  1. 此演算法實質上是使用程式碼邏輯還原了質因數分解的全過程。當給定數字num取餘2、3、5與0相等,那麼表示num的因子一定包含2、3、5。
  2. 使用num除以2、3、5則可以表示為分解出一個因子,以此類推,當num==1時,表示給定數字的因子只包含2、3、5,根據定義即可得知這個數為醜數。
#include <iostream>
using namespace std;

bool isUgly(int num) {
	/*當num包含因數2時,取餘結果必定為0;num/2相當於分解出一個因數:2。
	以此類推,當num==1時,表示給定數字的因子只包含2、3、5,根據定義即可得知這個數為醜數*/
	while (num % 2 == 0)
		num /= 2;
	while (num % 3 == 0)
		num /= 3;
	while (num % 5 == 0)
		num /= 5;
	return num == 1 ? true : false;
}

int main() {
	int num;
	/*如果需要輸入時不受回車影響,可以使用陣列儲存使用者輸入的數字*/
	while (true) {
		cin >> num;
		if (!num) {
			break;
		}
		cout << (isUgly(num) ? "True" : "False") << "\n";
	}
	system("pause");
	return 0;
}

相關推薦

c++程式碼判斷給定數字是否

題目描述 只包含因子2,3,5的正整數被稱作醜數,比如4,10,12都是醜數,而7,23,111則不是醜數,另外1也不是醜數。請編寫一個函式,輸入一個整數n,能夠判斷該整數是否為醜數,如果是,則輸出True,否則輸出False。 輸入描述 每行輸入一個正整數 n 1

C和Java判斷一個數字是否素數

C: /* 素數: 素數又稱質數。所謂素數是指除了 1 和它本身以外,不能被任何整數整除的數,例如17就是素數,因為它不能被 2~16 的任一整數整除。 */ # include <stdio.h> bool PrimeNumber(int val); int ma

C++之判斷一個數是否素數

#include <iostream> #include "math.h" using namespace std; bool isPrimeNumber(int number) { //判斷是否為素數 float sqrtOfNum = sqrt(number);

判斷給定序列是否BST後序遍歷序列

輸入一個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。假設輸入的陣列的任意兩個數字都互不相同。 目錄 一、BST 1.1 定義 1.2 性質 二、思路 一、BST 1.1 定

C語言:將數字轉化字串

#include<stdio.h> #include<assert.h> #include<string.h> //123====>“1 2 3” 將數字轉化為字串 char *my_itoa(char *str,i

C# 程式碼判斷電腦是否聯網

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.

判斷一個數是否完美核心程式碼

package 演算法學習;import java.util.*;//整除找因子必然用到模運算public class 完美數 {public boolean isPerfect(int n) {int sum=0;for(int i=1;i<n;i++) {if(n%

C語言判斷一個數是否素數

所謂素數,是指除了1和本身之外,不能被其他任何整數整除的數。 判斷一個數n(n>=3)的方法:將n作為被除數,將2到(n-1)各個整數先後做除數,如果都不能被整除,則n為素數。 演算法分析: S1:輸入n的值 S2:i=2(i作為除數) S3:n被i除,得餘數r,r=

C#程式碼判斷閏年

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.

js判斷一個數字是否整數:

1、使用取餘運算子(%) + 判斷物件是否是數字來判斷:     注意:空字串、字串型別數字、布林true、空陣列對1求餘,結果都是true(因為他們都是物件,),所以要先判斷物件是否為數字var isYear=function(year){if(typeof(year)==

c語言==判斷一個數是否2的整數次方【不使用迴圈】

對於判斷一個數是否為2的N次方問題,通常想到的最為直接的辦法就是對這個數不斷對2取餘,為0就將該數變為該數除以2,直到最後該數為1為止。 void judge(int n) { while(!(n % 2)) { n = n

C語言中把數字轉換字串

在將各種型別的資料構造成字串時,sprintf 的強大功能很少會讓你失望。由於sprintf 跟printf 在用法上幾乎一樣,只是列印的目的地不同而已,前者列印到字串中,後者則直接在命令列上輸出。這也導致sprintf 比printf 有用得多。sprintf 是個變參函

java 日期判斷 給定日期是否當天 一週7天以內 一週7天以外

public static boolean isToday(String validateDate){final String format = "yyyy-MM-dd HH:mm:ss";Date vDate  = null;try {vDate = str2Date(v

判斷一個數是否

判斷 n) back for format %s 個數 一個 lse 回數:數字正反都是它本身就叫回數 def is_back_num(num): if str(num) == str(n)[::-1]

判斷一個數是否水仙花

原部落格地址 在判斷某一個數是水仙花數之前,我們先介紹一下什麼是水仙花數。 水仙花數(Narcissistic  number)也被稱為超完全數字不變數(pluperfect digital invariant,PPDI)、自戀數、自冪數、阿姆斯壯數或阿姆斯特朗

判斷某整數是否平方之和

題:給定一個整數 N,寫一個程式判斷是否存在 2 個整數 a、b(a < b),使得 a^2 + b^2 = N 如: 輸入:N = 5,輸出:true 輸入:N = 7,輸出:false

判斷一個整數是否水仙花(迴圈分解,立方相加)

判斷一個數是否為水仙花數,最常規的做法就是:分解個十百位,立方相加與原數做相等判斷。現在我們來換種思路判斷一個三位正整數是否為水仙花數。程式碼如下:import java.util.*; class

判斷一個數是否是

return pre ole ret pub public boolean 因子 nbsp 問題描述:對於只含有質因子2,3,5的數,我們稱這樣的數為醜數 代碼如下: public static boolean isUgly(int n){ whi

C#判斷一個string是否數字(正則表示式)

方案一:Try...Catch(執行效率不高) private bool IsNumberic(string oText) {           try     &nb

C++ 程式碼統計工具 & 判斷一行程式碼是否註釋行

這兩天接手了一個專案,專案定義了一種自己語法,所以有了判斷註釋的需求。 這裡自己簡單實現了一個,程式碼非常精簡。 提供的註釋語法和C++是一模一樣的, 允許 // 和 /* */兩種註釋 兩個問題