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

来源:互联网 发布:burpee 知乎 编辑:程序博客网 时间:2024/04/28 10:33
  • 题目:给定一个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;            }        }    }}
0 0