我是编程新手,我现在正在学习Java。有没有人可以帮我解决如何使用for-loop检查数字是否为素数的问题?提前感谢!
答案 0 :(得分:0)
来自this网站。
如果他们拥有的唯一除数是1和它本身,我们知道数字是素数。通常,我们可以检查从1到自身的每个整数(不包括)并测试它是否均匀分配。
例如,人们可能想要运行此算法:
//checks whether an int is prime or not.
boolean isPrime(int n) {
for (int i = 2; i < n; i++) {
if (n % i == 0)
return false;
}
return true;
}
一开始看起来并不坏,但我们可以让它更快 - 更快。考虑如果2除以某个整数n,那么(n / 2)也将n除。这告诉我们,我们不必尝试从2到n的所有整数。现在我们可以修改我们的算法:
//checks whether an int is prime or not.
boolean isPrime(int n) {
for (int i = 2; 2 * i < n; i++) {
if (n % i == 0)
return false;
}
return true;
}
通过一些更高效的编码,我们注意到你真的只需要达到n的平方根,因为如果列出一个数字的所有因子,则平方根将始终位于中间(如果它碰巧不是一个整数,我们仍然可以,我们可能过于近似,但我们的代码仍然有用。)
最后,我们知道2是“最奇怪的”素数 - 它恰好是唯一的素数。因此,我们只需要单独检查2,然后遍历奇数到n的平方根。最后,我们的代码将类似于:
//checks whether an int is prime or not.
boolean isPrime(int n) {
//check if n is a multiple of 2
if (n % 2 == 0) return false;
//if not, then just check the odds
for (int i = 3; i * i <= n; i += 2) {
if (n % i == 0)
return false;
}
return true;
}
正如你所看到的,我们已经从检查每个整数(最多n到n以找出一个数字是素数)到检查一半的整数直到平方根(奇数,真的)。这是一个巨大的进步,特别是考虑到数字很大时。
答案 1 :(得分:0)
我建议你从最底层阅读@Neng Liu的答案并尝试理解所有的算法。 但是,您可以从@Neng Liu的答案中查看此代码以获取第二个算法。
import java.util.Scanner;
public class PrimeNumber{
public static void main(String [] args){
int number,i,rem;
boolean flag = true;
Scanner input = new Scanner(System.in);
System.out.print("Enter an integer to check if its PRIME number : ");
number = input.nextInt();
if(number >= 2){
for(i = 2; 2 * i < number; i++){
rem = number % i;
if(rem == 0){
flag = false;
break;
}
}
if(flag){
System.out.println(number+" is a Prime number");
}else{
System.out.println(number+" is not Prime number");
}
}else{
System.out.println("1 & Negative numbers can't be prime ! ");
}
}
}
答案 2 :(得分:0)
这是一个检查数字是否为素数的简单程序;
import java.util.*;
class Example{
public static void main(String args[]){
Scanner input=new Scanner(System.in);
int count=0;
System.out.print("Input a Number : ");
int num=input.nextInt();
for(int i=2;i<num;i++){
if(num%i==0){count++;}
}
if(num>1&count==0){
System.out.print("\nIt Is a Prime Number.");
}
else{
System.out.print("\nIt Is a Not Prime Number.");
}
}
}
答案 3 :(得分:0)
public static boolean isPrime(int n) {
if (n < 2) {
return false;
}
for (int i = 2; i < n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}