[英]Why is this program for finding Prime Factors of a number using Java not working?
[英]java program to find prime factors of a number
public class PrimeFactor {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter the number:");
int num=input.nextInt();
int factors;
for(int i=1;i<num;i++)
{
factors=num%i;
if(factors==0 && isPrime(factors))
System.out.println(i+"");
}
input.close();
}
public static boolean isPrime(int n)
{
boolean prime=true;
for(int i=2;i<n;i++)
{
if(n%i==0)
{
prime=false;
break;
}
}
return prime;
}
}
我已编写此代码来查找数字的主要因素。 我应用的逻辑对我来说似乎很好,但是输出有问题。
for(int i=1;i<num;i++)
{
factors=num%i;
if(factors==0 && isPrime(factors))
System.out.println(i+"");
}
input.close();
factors
是num / i
的余数。 所以,如果factors
收益0
,那么你是路过0
到你的方法isPrime()
这是没有意义的。 我认为您可能希望将i
传递给isPrime
,而不是factors
。
因此,您的循环应该是同一回事,但具有传递给isPrime()
函数的不同参数。
for(int i=1;i<num;i++)
{
factors=num%i;
if(factors==0 && isPrime(i))
System.out.println(i+"");
}
input.close();
DanGordon说您应该将i
而不是factors
传递给isPrime()
是正确的。 这样可以防止输出复合数字,但是仍然不能解决即使输入的数字是素数也不会显示的问题。 那里的问题在于您的for
循环。 i<num
告诉程序仅在i
小于输入的数字时才迭代for
循环,因此,一旦i
等于num
,它就会退出循环。 如果将i<num
更改为i<=num
,这将确保当i
等于输入的数字时循环也将运行,因此如果该数字为质数,则它将显示输入的数字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.