JAVA写程序输出前五十个素相信大家都不会陌生,这是在面试中经常会问到的题目,也是考核java写代码的基本功,那JAVA写程序如何输出前五十个素数?下面来我们就来给大家讲解一下。
JAVA输出前50个素数的两种方法:
方法一:
package Helloworld; public class prime { public static void main(String[] args) { // TODO Auto-generated method stub int count = 0; for (int n = 2; count < 50; n++) { int isprime = 1; for (int i = 2; i < n; i++) < p = "" > { if (n % i == 0) { isprime = 0; break; } } if (isprime == 1) { System.out.print(n + " "); count = count + 1; } } } }
方法二:
package Hello; public class Isprime { public static void main(String[] args) { // TODO Auto-generated method stub //思想:利用现有的素数来检验之后的素数 int[] primes = new int[50]; primes[0] = 2; int cnt = 1; //下一个素数放到1的位置,且现在只有一个素数 MAIN_LOOP: for (int x = 3; cnt < 50; x++) { for (int i = 0; i < cnt; i++) < p = "" > { if (x % primes[i] == 0) { continue MAIN_LOOP; } } primes[cnt++] = x; } for (int k: primes) { System.out.print(k + " "); } } }
如何判断一个数是否是素数?
质数(prime number)又称素数,有无限个
质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数,这样的数称为质数。
import java.util.Scanner; public class TestWork { public static void main(String[] args) { boolean isPrime = true; Scanner sc = new Scanner(System.in); System.out.println("请输入一个正整数"); int num = sc.nextInt(); if (num > 0) { int k = (int) Math.sqrt(num); //k为num的正平方根,取整数 for (int i = 2; i <= k; i++) { if (num % i == 0) { isPrime = false; //不是素数 break; } } } if (isPrime) { System.out.println(num + "是素数"); } else { System.out.println(num + "不是素数"); } } }
输出1~1000之间的素数
思路
偶数肯定不是素数,所以递增的时候可以以奇数的形式递增,再在奇数中去掉非质数的数。
public class TestWork { public static void main(String[] args) { boolean isPrime = true; int PrimeCount = 0; for (int i = 3; i <= 1000; i += 2) { int k = (int) Math.sqrt(i); //k为num的正平方根,取整数 isPrime = true; for (int j = 2; j <= k; j++) { if (i % j == 0) { isPrime = false; //不是素数 break; } } if (isPrime) { PrimeCount++; System.out.print(i + "\t"); if (PrimeCount % 5 == 0) { System.out.println(); } } } } }
java 求1-100之间的质数
质数定义:
质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。
如:2,3,5,7,11…
1、质数实例一
//1-100之间的质数--------1 public class PrimeNumber { public static void main(String[] args) { for (int i = 2; i <= 100; i++) { boolean flag = true; for (int j = 2; j < i; j++) { if (i % j == 0) { flag = false; break; } } if (flag) { System.out.println("质数:i= " + i); } } } }
2、质数实例二
//1-100之间的质数--------2 public class PrimeNumber { public static void main(String[] args) { for (int i = 2; i <= 100; i++) { for (int j = 2; j <= i; j++) { if (i % j == 0 && i != j) { break; } if (j == i) { System.out.println("质数:i= " + i); } } } } }
3、质数实例三
//1-100之间的质数--------3 public class PrimeNumber { public static void main(String[] args) { for (int i = 2; i <= 100; i++) { int j = 2; while (i % j != 0) { j++; } if (j == i) { System.out.println("质数:i= " + i); } } } }
4、质数实例四
//1-100之间的质数--------4 public class PrimeNumber { public static void main(String[] args) { for (int i = 2; i <= 100; i++) { int j = 2; for (; j <= i / 2; j++) { if (i % j == 0) { break; } } if (j == i / 2 + 1) { System.out.println("质数:i= " + i); } } } }
5、质数实例五
public class PrimeNumber { public static void main(String[] args) { int count = 0; for (int i = 2; i <= 100; i++) { int j = 2; for (; j <= (int) Math.sqrt(i); j++) { if (i % j == 0) { break; } } if (j == (int) Math.sqrt(i) + 1) { System.out.println("质数:i= " + i); count++; } } System.out.println("质数个数:count= " + count); } }
6、质数实例六
public class PrimeNumber { public static void main(String[] args) { int count1 = 0, count2 = 0; for (int i = 2; i <= 100; i++) { for (int j = 2; j <= Math.sqrt(i); j++) { if (i % j != 0) { //不能被整除累计一次 count1++; } } // 转为int的类型 int num2 = (int) Math.sqrt(i); //如果累计次数num2 - 1个数相等则为素数 if (count1 == (num2 - 1) { System.out.println("质数: " + i); count2++; } //找到素数后count1再初始化为0 count1 = 0; } // 统计素数个数 System.out.println("质数个数:count2= "+count2); } }
我们可以利用以上的方法判断一个数是否是素数,其实也没有什么难度,只是将代码逻辑理清楚,一切都会很简单!最后大家如果想要了解更多java实例知识,敬请关注奇Q工具网。
推荐阅读: