#include<stdio.h>
bool isUglyNumber(int num){
while(num%2==0)
num/=2;
while(num%3==0)
num/=3;
while(num%5==0)
num/=5;
return num==1?true:false;
}
int getUglyNumber(int n){
if(n<=0)
return 0;
int num=0;
int number=0;
while(num<n){
number++;
if(isUglyNumber(number))
num++;
}
return number;
}
int min(int t2,int t3,int t5){
if(t2>t3){
if(t3>t5)
return t5;
else return t3;
}
else{
if(t2>t5)
return t5;
else return t2;
}
}
int getUgluNumberAgain(int n){
if(n<=0)
return 0;
int* arr=new int[n];
arr[0]=1;
int index=1;
int* p2=arr;
int* p3=arr;
int* p5=arr;
while(index<n){
int temp=min(*p2*2,*p3*3,*p5*5);
arr[index]=temp;
while(*p2*2<=arr[index])
p2++;
while(*p3*3<=arr[index])
p3++;
while(*p5*5<=arr[index])
p5++;
index++;
}
int ugly=arr[index-1];
delete[] arr;
return ugly;
}
void main(){
int n;
printf("请输入数据\n");
scanf("%d",&n);
int uglyNum=getUglyNumber(n);
int uglyNum1=getUgluNumberAgain(n);
printf("%3d %3d",0,uglyNum1);
}
UglyNumber
最新推荐文章于 2022-02-21 17:19:03 发布