质数因子

import java.util.ArrayList;
import java.util.Scanner;
/*
 * 功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
 * 
 * 按照从小到大的顺序输出它的所有质数的因子,以空格隔开
 * */

public class Main {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
            Scanner in=new Scanner(System.in);        
        	  long n=in.nextLong();
        	  System.out.println(getResult(n));
      
	}
	public static String getResult(long ulDataInput){
		ArrayList<Long> list=new ArrayList<Long>();		
	 while(ulDataInput!=1){//直到数是1
			for(int i=2;i<=ulDataInput;i++){			 
		  		  if(ulDataInput%i==0){//如果能被整除
		  			  if(isPrime((long) i)){
		  				  list.add((long)i);//是质数就添加到list中
		  				  ulDataInput/=i;//把除的结果迭代
		  				  break;
		  			}
		    }
		}		
		
  	  }
	    //list转换为字符串
	    StringBuffer sb=new StringBuffer();
	    for(int i=0;i<list.size();i++){
		     sb.append(list.get(i));
		     sb.append(" ");
	    }
	    sb.deleteCharAt(sb.length()-1);
		return sb.toString();
	}
	
	public static boolean isPrime(Long k){//判断能被整除的因子是不是质数,质数只有1和它本身的约数,有其他约数的都不是质数
		    for(int i=2;i<Math.sqrt(k);i++){
		    	   if(k%i==0){
		    		   return false;
		    	   }
		    }
		    return true;
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值