UglyNumber

#include <stdio.h>
#include <iostream>

using namespace std;

//只包含因子2、3和5的數稱作醜數(Ugly Number)
bool IsUgly(int number)
{
	while(number % 2 == 0)
		number /= 2;
	while(number % 3 == 0)
		number /= 3;
	while(number % 5 == 0)
		number /= 5;

	if(number == 1)
		return true;
	else
		return false;
}

//返回從1開始第index個醜數
int GetUglyNumber(int index)
{
	int number(1);
	int sumOfUglyNumber = 1;
	while(sumOfUglyNumber != index )
	{
		number++;
		if (IsUgly(number))
		{
			sumOfUglyNumber++;
		}
	}

	return number;
}

void main()
{
	int index = -1;
	printf("please input one number\n");
	while(index < 1)
	{
		//假設輸入正常
		cin>>index;
		if(index < 0)
			printf("please input one positive number \n");
	}
	if(index == 1)
	{
		cout<<1<<endl;
		return;
	}
	int uglyNumber = GetUglyNumber(index);
	cout<<uglyNumber<<endl;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章