Java 对于素数,这是不同的逻辑吗
我是java新手。我正在尝试创建一个程序来查找素数。我知道有很多方法可以得到素数,但今天我编写了一个程序,我只是检查了如果给定的数除以2,3,5或7,那么它就不是素数。这个逻辑是正确的还是不足以计算素数。供参考;下面是代码,令人惊讶的是它的计算结果是正确的Java 对于素数,这是不同的逻辑吗,java,primes,Java,Primes,我是java新手。我正在尝试创建一个程序来查找素数。我知道有很多方法可以得到素数,但今天我编写了一个程序,我只是检查了如果给定的数除以2,3,5或7,那么它就不是素数。这个逻辑是正确的还是不足以计算素数。供参考;下面是代码,令人惊讶的是它的计算结果是正确的 import java.util.Scanner; public class Prime { public static void main(String[] args) { Scanner sc = ne
import java.util.Scanner;
public class Prime
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("Enter number");
int n = sc.nextInt();
if(n==1) {
System.out.println(n+" is not prime");
} else if(n==2) {
System.out.println(n+" is prime");
} else if(n%2==0 || n%3==0 || n%5==0 || n%7==0) {
System.out.println(n+" is not prime");
} else {
System.out.println(n+" is prime");
}
}
}
这个逻辑是正确的还是不足以计算素数
不,您只测试可被(小)素数子集整除的数。对于较大的数字,当某些数字不是素数时,它会错误地将其报告为素数
此外,一些小素数被错误地报告为非素数
供参考;下面是代码,令人惊讶的是它的计算结果是正确的
import java.util.Scanner;
public class Prime
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("Enter number");
int n = sc.nextInt();
if(n==1) {
System.out.println(n+" is not prime");
} else if(n==2) {
System.out.println(n+" is prime");
} else if(n%2==0 || n%3==0 || n%5==0 || n%7==0) {
System.out.println(n+" is not prime");
} else {
System.out.println(n+" is prime");
}
}
}
这仅仅意味着你没有测试一个不是2个(或更多)大于7的素数乘积的数字。试试121
或者是3、5或7。这是错误的!首先,3,5,7都是pirme,查看代码,如果输入3,本程序将打印“3不是素数”,然后输入5,7,跟后面一样,所以逻辑不对 不,这还不够。对于较小的数字,它会起作用,但随后会出现一个数字,它不是这些数字的倍数,而是11、13、17的倍数,以此类推。您必须检查所有小于数字平方根的素数。
正如尼科指出的,它也会将一些素数标记为非素数 更好地检查,这是获得质数和更快性能的最佳解决方案。您可能无法立即获得它,但它是值得的我认为这段代码对素数很有效。如果有什么需要改进的,请告诉我
我认为这是对的。我们的代码使用2,3,5和7的结果是一样的。但也许你们的问题是这个网站关闭?我想,为了确保我真的素数,你们可以写以下代码:inti,m=0,flag=0;int n=17//要检查的编号m=n/2;对于(i=2;这是一个完美的例子,说明了为什么不能信任开发人员来测试他们自己的代码:-)@user3622254-尝试阅读答案:-)谢谢大家。现在我知道这个逻辑是完全错误的。121是一个很好的例子,它是11的平方,这个程序仍然显示121为素数,这是错误的@AndrewShepherd哈哈……没错……顺便说一句,我正在申请自动化测试职位。:)3是素数,但它是一个非常小的素数,几乎不算什么。捕捉得好。另一个原因是,不管大小,3是质数。OP的计划有多方面的缺陷。这只是其中之一。143是素数吗?不。代码不完全正确?谢谢你指出。还有其他能准确找出素数的代码吗?很多很多。在这里还有。(顺便说一句,不是我的反对票)。