运行提示:
超出运算时间。
题目描述:
如果一个正整数,它的质因数只包含2,3和5,那么这个数就满足条件。
同时,规定1也满足条件。
示例:前十个满足条件的数字:1,2,3,4,5,6,8,9,10,12
请编写一个函数,返回第n个满足条件的数。
思路:
1、判断是否满足条件:
因数分解:在分解过程中一旦出现不属于{2,3,5}的因数即认为不满足条件;分解到最后依然只出现{2,3,5},即认为满足。(特别规定1满足)
2、从1开始,没出现一个满足条件的即计数加1;到n
代码实现:
package ali.example;
import java.util.Scanner;
public class Z0410 {
public static void main(String[] args) {
//System.out.println("输入一个数进行分解:");
Scanner s=new Scanner(System.in);
// System.out.println(factor(s.nextInt()));
int i = 0; int N = s.nextInt();
int count = 0;
while(true) {
i = i+1;
if(factor(i)) {
count++;
if(count == N) {
System.out.println(i);
break;}
}
}
}
// for(int i =1;i<19;i++)
System.out.println(String.valueOf(i)+ factor(i));
// }
//函数:进行分解质因数
static boolean factor(int number)
{
if(number == 1) return true;
for(int i=2;i<number;i++)
{
if(number%i==0)
{
//System.out.print(i+" ");
if(i != 2 && i!=3 && i!=5)
return false;
//判断number/i是不是素数,如果是素数就直接输出
if(isPrime(number/i))
{
if(number/i != 2 && number/i !=3 && number/i!=5)
return false;
else
return true;
}
else
{
return factor(number/i);
}
}
}
if(number != 2 && number!=3 && number!=5)
return false;
else
return true;
}
//函数:判断是不是素数
static boolean isPrime(int number)
{
for(int i=2;i<number;i++)
{
if(number%i==0)
{
return false;
}
}
return true;
}
}
判断是否为素数:
static boolean isPrime(int number)
{
for(int i=2;i<number;i++)
{
if(number%i==0)
{
return false;
}
}
return true;
}