使用java,求100以内的质数(素数),做这道题目,有很多种方式!我代码中写了3种,大家可以任选一种!很多公司的面试的时候,笔试的时候很喜欢出这道题目。
(java的面试中很多时候都会考这道题目,不光可以考察多层嵌套循环,还可以考察break、sqrt()函数、小算法、条件判断结构、效率性能等等知识点,而且题目还不算太大,也不算太难,所以大家最好要会写)
package javase;
import java.util.Scanner;
/**
* 求100以内的质数
*/
public class PrimeNumber {
/**
* 求100以内的质数
*/
public static void main(String[] args) {
//求100以内的质数
int number = 0;
int innerNumber = 0;
int count = 0; //100内有多少个质数
for (number = 2; number <= 100; number++) {
// for (innerNumber = 2; innerNumber <= number; innerNumber++) {
for (innerNumber = 2; innerNumber <= number; innerNumber++) {
if (number % innerNumber == 0 && number != innerNumber) {
break;
}
//如下这种写法也可以
// if (number == innerNumber) {
// System.out.println("质数" + number);
// }
if (number % innerNumber == 0 && number == innerNumber) {
count++;
System.out.println("第" + count + "个质数=" + number);
}
}
}
System.out.println("----------100以内总共有" + count + "个质数!----------");
// test();
test2();
myFor();
}
public static void test() {
System.out.println("-------------------");
int count1 = 0, count2 = 0;
for (int i = 5; i <= 20; i++) {
// 每一个数一个个接受检验是否为素数
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j != 0) {
//不能被整除累计一次
count1++;
}
}
// 转为int的类型
int num = (int) Math.sqrt(i);
//如果累计次数num - 1个数相等则为素数
if (count1 == (num - 1)) {
System.out.println("素数:" + i);
count2++;
}
// 统计素数个数
count1 = 0;
}
System.out.println(count2);
}
public static void test2() {
Scanner in = new Scanner(System.in);
int x;
System.out.println(" 请输入要求的素数范围:");// 加入一个提示语句
x = in.nextInt();
System.out.println(" 2到" + x + "内的素数有:");
int i, n;
for (i = 2; i <= x; i++)
{
for (n = 2; n <= (int) Math.sqrt(i); n++)
// 核心语句:内层变量<=(int)Math.sqrt(外层变量)
if (i % n == 0)
break;
if (n > (int) Math.sqrt(i))//判断是否为素数
System.out.print(" " + i);// 输出素数
}
}
public static void myFor() {
System.out.println("*************************");
for (int i = 1; i <= 5;) {
System.out.println("i = " + i);
i++;
}
System.out.println("*************************");
for (int i = 1; i <= 5; i++) {
System.out.println("i = " + i);
}
}
}
package javase;
import java.util.Scanner;
/**
* 求100以内的质数
*/
public class PrimeNumber {
/**
* 求100以内的质数
*/
public static void main(String[] args) {
//求100以内的质数
int number = 0;
int innerNumber = 0;
int count = 0; //100内有多少个质数
for (number = 2; number <= 100; number++) {
// for (innerNumber = 2; innerNumber <= number; innerNumber++) {
for (innerNumber = 2; innerNumber <= number; innerNumber++) {
if (number % innerNumber == 0 && number != innerNumber) {
break;
}
//如下这种写法也可以
// if (number == innerNumber) {
// System.out.println("质数" + number);
// }
if (number % innerNumber == 0 && number == innerNumber) {
count++;
System.out.println("第" + count + "个质数=" + number);
}
}
}
System.out.println("----------100以内总共有" + count + "个质数!----------");
// test();
test2();
myFor();
}
public static void test() {
System.out.println("-------------------");
int count1 = 0, count2 = 0;
for (int i = 5; i <= 20; i++) {
// 每一个数一个个接受检验是否为素数
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j != 0) {
//不能被整除累计一次
count1++;
}
}
// 转为int的类型
int num = (int) Math.sqrt(i);
//如果累计次数num - 1个数相等则为素数
if (count1 == (num - 1)) {
System.out.println("素数:" + i);
count2++;
}
// 统计素数个数
count1 = 0;
}
System.out.println(count2);
}
public static void test2() {
Scanner in = new Scanner(System.in);
int x;
System.out.println(" 请输入要求的素数范围:");// 加入一个提示语句
x = in.nextInt();
System.out.println(" 2到" + x + "内的素数有:");
int i, n;
for (i = 2; i <= x; i++)
{
for (n = 2; n <= (int) Math.sqrt(i); n++)
// 核心语句:内层变量<=(int)Math.sqrt(外层变量)
if (i % n == 0)
break;
if (n > (int) Math.sqrt(i))//判断是否为素数
System.out.print(" " + i);// 输出素数
}
}
public static void myFor() {
System.out.println("*************************");
for (int i = 1; i <= 5;) {
System.out.println("i = " + i);
i++;
}
System.out.println("*************************");
for (int i = 1; i <= 5; i++) {
System.out.println("i = " + i);
}
}
}