當時寫的太着急了,代碼我沒整理,是以顯得有點亂,大家見諒哈!
使用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;
public class PrimeNumber {
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);
}
}
}