java算法值面试题

Java算法

  1. 求素数(面试题)

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. 给出一个大于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);

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值