Java算法
- 求素数(面试题)
package prime_number; import java.util.Scanner;
public class PrimeNumber { //题目:计算101到200之间的素数,并且输出素数(面试题) //一个大于1的自然数,除了1和他本身,不能被其他自然数整除的数称为素数 public static void main(String[] args) { scannerPrimeNumber(); boolean flag = true; for(int i=101;i<200;i++) { for(int j=2;j<i;j++) { //定义i,如果i%j==0;可以整除就不是素数, if(i%j==0) { flag = false; break; }else { flag = true; } } //如果一个循环结束,i没有被整除,说明就是素数 if(flag) { System.out.println(i); } } } //从控制台输入一个整数,求出这个整数内的所有素数 public static void scannerPrimeNumber() { Scanner input = new Scanner(System.in); System.out.println("请输入一个大于1的整数"); int oneNember = input.nextInt(); boolean flag = true; for(int i=1;i<oneNember;i++) { for(int j=2;j<i;j++) { if(i%j==0) { flag = false; break;//退出循环 }else { flag = true; } } if(flag) { System.out.print(oneNember+"这个整数内的素数有"+i+"\t"); } } } } |
- 给出一个大于1的任意自然数,求出这个数的质因数;例如给出90,输出90=2*3*3*5
分解质因数的方法 /** * 题目:将一个数分解成质因数,例如输入90;输出90=2*3*3*5 * 程序分析 * 1.先找到最小的指数i * 2.如果这个指数敲等于n,说明分解质因数过程结束 * 3.n>i, */ public void scannerPrimeNumber2(int n) { for(int i=2;i<=n;i++) { if(n%i==0) {//说明当前的i可以作为乘数 System.out.print(i); if(n!=i) {//代表的是 System.out.print("*"); } scannerPrimeNumber2(n/i); } } System.exit(0);//退出当前的虚拟机 } 测试方式 public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入一个大于1的整数"); int oneNumber = input.nextInt(); //scannerPrimeNumber2(oneNumber); System.out.print("分解质因数:"+oneNumber+"="); new PrimeNumber().scannerPrimeNumber2(oneNumber); } |