Java 我的一些素数被认为不是素数
我不太确定我的代码出了什么问题,似乎大部分事情都在进行中Java 我的一些素数被认为不是素数,java,primes,Java,Primes,我不太确定我的代码出了什么问题,似乎大部分事情都在进行中 public static char isPrime(int x) { char result = 'r'; for(int y=2;y<x;y++) { if(x%y==0) result = 't'; else re
public static char isPrime(int x)
{
char result = 'r';
for(int y=2;y<x;y++)
{
if(x%y==0)
result = 't';
else
result = 'f';
}
return result;
}
publicstaticcharisprime(intx)
{
字符结果='r';
因为(inty=2;y你的真与假是相反的,如果它可以被它的非素数整除
此外,在循环的每次运行中,您都会覆盖所有的旧数据,只要任何数据是完全可除的,那么它就不是素数,此时返回false
另外,你有没有考虑过使用布尔值true和false?如果真值和假值正好可以被它的非素数整除,那么你的真值和假值是相反的
此外,在循环的每次运行中,您都会覆盖所有的旧数据,只要任何数据是完全可除的,那么它就不是素数,此时返回false
另外,您是否考虑过使用布尔值true和false?当您这样切换时,您会丢弃所有以前的结果
假设它是素数,直到找到一个复合数
public static char isPrime(int x)
{
char result = 't';
for(int y=2;y<x;y++)
{
if(x%y==0)
{
result = 'f';
break;
}
}
return result;
}
publicstaticcharisprime(intx)
{
字符结果='t';
对于(inty=2;y,当您像那样切换时,您会丢弃所有以前的结果
假设它是素数,直到找到一个复合数
public static char isPrime(int x)
{
char result = 't';
for(int y=2;y<x;y++)
{
if(x%y==0)
{
result = 'f';
break;
}
}
return result;
}
publicstaticcharisprime(intx)
{
字符结果='t';
对于(int y=2;y您总是要到达循环的末尾,因此结果将是x-1
您需要从result='t'
开始,并中断false
值的循环。您总是要到达循环的末尾,因此结果将是x-1
public static char isPrime(int x)
{
char result = 't';
for(int y=2;y<x;y++)
{
if(x%y==0) {
result = 'f';
break;
}
}
return result;
}
您需要从result='t'
开始,并中断false
值的循环。公共静态字符isPrime(int x)
public static char isPrime(int x)
{
char result = 't';
for(int y=2;y<x;y++)
{
if(x%y==0) {
result = 'f';
break;
}
}
return result;
}
{
字符结果='t';
对于(int y=2;ypublicstaticcharisprime(int x)
{
字符结果='t';
对于(int y=2;y当你发现你的数字不是素数后,你应该break
或return
,就这么简单。此外,当数字不是素数时,你似乎返回t
。当你发现你的数字不是素数后,你应该break
或return
,就这么简单。添加传统上,当数字不是素数时,您似乎返回t
。尝试以下方法:
public static boolean isPrime(int x) {
for (int y = 2; y*y <= x; y++) {
if (x % y == 0)
return false;
}
return true;
}
公共静态布尔值isPrime(int x){
对于(int y=2;y*y请尝试以下方法:
public static boolean isPrime(int x) {
for (int y = 2; y*y <= x; y++) {
if (x % y == 0)
return false;
}
return true;
}
公共静态布尔值isPrime(int x){
对于(int y=2;y*y你的方法不是解析素数。如果一个数只能被一除或自身除,那么它就是一个素数
例如,如果我在方法中输入17,当y==16时,结果将被设置为“f”,这将是返回的结果。但是,17是一个素数
相反,你应该尝试类似的方法
for (int i = 2; i < x; i++) {
if (x % y == 0) return false;
}
return true;
for(int i=2;i
您的方法不是解析素数。如果一个数只能被一除或自身除,那么它就是素数
例如,如果我在方法中输入17,当y==16时,结果将被设置为“f”,这将是返回的结果。但是,17是一个素数
相反,你应该尝试类似的方法
for (int i = 2; i < x; i++) {
if (x % y == 0) return false;
}
return true;
for(int i=2;i
请使用boolean并提供Junit测试用例,这样我们就知道您的确切期望
public static boolean isPrime(int x)
{
for(int y=2;y<x;y++)
{
if(x%y==0)
return false;
}
return true;
}
公共静态布尔值isPrime(int x)
{
对于(inty=2;y,请使用boolean并提供Junit测试用例,这样我们就知道您的确切期望
public static boolean isPrime(int x)
{
for(int y=2;y<x;y++)
{
if(x%y==0)
return false;
}
return true;
}
公共静态布尔值isPrime(int x)
{
对于(int y=2;yy你真的应该开始使用布尔值而不是处理字符比较。你能给我们一个例子吗?假设't'
表示复合,'f'
表示素数,你只返回x-1
是否除法,因为结果是在每次循环迭代中写入的。如果这是作业,我建议如果你想了解你的助教,你可能会在这里得到一个解决方案。但是如果你想理解它,也想知道老师想让你学习什么,那么去助教那里会对你帮助最大。@jlordo代码是重复的,但上一个问题只是询问编译器错误。这个问题问的是不同的。幸好他是每个问题只问1个问题。你真的应该开始使用布尔值而不是处理字符比较。你能给我们一个例子吗?假设't'
表示复合,'f'
表示素数,你只返回x-1
是否除法,因为结果是在每个循环迭代中写入的。如果这是家庭作业我建议你和助教谈谈,你可能会在这里得到一个解决方案。但是如果你想理解它,也知道老师想让你学什么,那么去助教那里对你帮助最大。@jlordo代码重复了,但上一个问题只是问编译器错误。这个问题的要求不同。他每个问题只问一个问题是件好事。eeeewwwww布尔值:-PI+1'ed,但后来我注意到y
的严重失礼。再敲三下键盘就可以纠正这一错误了。:)@WillNess你当然是对的。复制粘贴错误,修复了它。谢谢!eeeewwww布尔值:-PI+1'ed,但后来我注意到了y
的严重失误。再按三次键就可以纠正这个错误了。:)@你当然是对的。复制粘贴错误,修正了。谢谢!哈哈,我们最终得到了完全相同的代码。哈哈,我们最终得到了完全相同的代码。