您的位置:首页 > 编程语言

华为在线编程系列-质数因子

2017-04-07 09:54 190 查看
题目:给定一个long型的数,按照从小到大的顺序输出其所有质数因子

输入输出描述

输入:一个long型整数
输出:按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。


思路:最小的质数为2,最大的质数为本身(如果这个数就是质数的话)当这个数不为1的时候,可以通过for循环来求其最小质因子,一旦找到一个质因子,则跳出当前循环,寻找下一个最小质因子

代码:

import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
while(scan.hasNext()){
long value = scan.nextLong();
while(value != 1){
for(int i = 2; i <= value; i++){
if(value%i == 0){
value = value/i;
System.out.print(i + " ");
break;
}
}
}
}
}
}


* 拓展:求1到n的所有质数,从小到大排序

思路:对于2-n(包括n)中的每个数,通过for循环和一个isPrime来标志这个其是否是质数

/**
* Created by hmh on 2017/4/7.
*/
import java.util.*;
public class FindAllPrime {

public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
boolean isPrime = true;
while(scanner.hasNext()){
long value = scanner.nextLong();
for(int i = 2; i <= value; i++){
//看i是否为质数
for(int j = 2; j < i; j++){
if(i%j == 0){
isPrime = false;
break;//如果能被整除,说明还有质因子
}
}
if(isPrime){
System.out.print(i + " ");
}
isPrime = true;
}
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: