判断一个数字的因数分解是否只含有2,3,5

运行提示:

超出运算时间。

请参考:求质因数只包含2,3,5的第n个数字

题目描述:

如果一个正整数,它的质因数只包含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;  
	    }  


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值