我正在尝试制作一个程序,其中用户输入2个数字,然后程序在这个间隙中给出tau数。
我认为for循环有一个错误,但我不知道它在哪里。
import java.util.Scanner;
public class tauNumber {
public static void main(String [] args){
int start=0,stop=0,count=0;
Scanner input =new Scanner(System.in);
System.out.println("Please enter first number: ");
start=input.nextInt();
System.out.println("Please enter last number: ");
stop=input.nextInt();
for(int i=0+start;i<=stop;i++){
for(int j=1;j<=start;j++){
if(i%j==0){
count++;
}
}
if(start/count==0){
System.out.println(i+" is a tau number" );
}
}
}
}
正如@Tunaki指出的那样,您不必说“ tau号码”,而应将其称为可重构号码。
我建议您将代码分成多个函数,以更好地了解正在发生的事情,我认为这是您想要的:
import java.util.Scanner;
class TauNumber {
public static void main(String[] args){
Scanner input =new Scanner(System.in);
System.out.println("Please enter first number: ");
int start=input.nextInt();
System.out.println("Please enter last number: ");
int stop=input.nextInt();
for(int i=start+1; i<stop; i++){
if(refractorable(i)){
System.out.println("Found tau number: "+ i);
break;
}
}
}
public static boolean refractorable(int number){
if(sumDivisors(number) == 0) return false;
if(number % sumDivisors(number) == 0){
return true;
} else {
return false;
}
}
public static int sumDivisors(int number){
int sum = 0;
for(int i=1; i<=number; i++){
if(number % i == 0){
sum++;
}
}
return sum;
}
}
注意:我还要指出,当您指定“ gap”时,它是什么意思?我认为start < x < stop
,因为那是差距,但肯定可以start < x <= stop
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句