Java 友好数函数给出了错误的结果
正如标题所描述的,我想创建一个函数,告诉我,我给出的两个数字都是友好的,但由于某些原因,我得到了错误的答案,我希望有人能看到这个问题Java 友好数函数给出了错误的结果,java,Java,正如标题所描述的,我想创建一个函数,告诉我,我给出的两个数字都是友好的,但由于某些原因,我得到了错误的答案,我希望有人能看到这个问题 public class Amicable{ public static void main(String[] args){ int n, m; int ndivisorsSum = 0; int mdivisorsSum = 0; n = Integer.parseInt(args[0]); m = Integer.
public class Amicable{
public static void main(String[] args){
int n, m;
int ndivisorsSum = 0;
int mdivisorsSum = 0;
n = Integer.parseInt(args[0]);
m = Integer.parseInt(args[1]);
for(int i = 1; i < n; i++){
if (n % i == 0){
ndivisorsSum = ndivisorsSum + i;
}
}
for(int i = 1; i < m; i++){
if (m % i == 0){
mdivisorsSum = mdivisorsSum + i;
}
}
if (ndivisorsSum == mdivisorsSum) {
System.out.println(n + " and " + m + " are amicable numbers");
}else{
System.out.println(n + " and " + m + " are not amicable numbers");
}
}
}
公共类友好{
公共静态void main(字符串[]args){
int n,m;
int ndivisorsSum=0;
int mdivisorsSum=0;
n=整数.parseInt(args[0]);
m=整数.parseInt(args[1]);
对于(int i=1;i
这不是友好数字的定义(根据维基百科)
应该是
if (nDivisorsSum == m && mDivisorsSum == n)
您还应检查输入的数字是否不同且为正数。你可以使用
do-while
循环重复,直到给出有效的输入。这不是友好数字的定义(根据维基百科)
应该是
if (nDivisorsSum == m && mDivisorsSum == n)
您还应检查输入的数字是否不同且为正数。您可以使用do while
循环重复,直到给出有效的输入。引用维基百科:
友好数是两个相互关联的不同数,每个数的适当因子之和等于另一个数。(一个数的真除数是该数的正因子,而不是该数本身。例如,6的真除数是1、2和3。)一对友好数构成周期2的等分序列。一个相关的概念是一个完美数,它是一个等于它自己的适当除数之和的数,换句话说,一个形成周期1等分序列的数。作为周期大于2的等分序列的成员的数字称为社交数字
因此,让你最终失败的是你检查两个数字是否友好的条件。您需要检查n
的所有除数之和是否等于m
和vica verse
int n, m;
int ndivisorsSum = 0;
int mdivisorsSum = 0;
n = 220;
m = 284;
for(int i = 1; i < n; i++){
if (n % i == 0){
ndivisorsSum += i;
}
}
for(int i = 1; i < m; i++){
if (m % i == 0){
mdivisorsSum += i;
}
}
if (ndivisorsSum == m && mdivisorsSum == n) { // Your mistake is here.
System.out.println(n + " and " + m + " are amicable numbers");
}else{
System.out.println(n + " and " + m + " are not amicable numbers");
}
intn,m;
int ndivisorsSum=0;
int mdivisorsSum=0;
n=220;
m=284;
对于(int i=1;i
引用维基百科:
友好数是两个相互关联的不同数,每个数的适当因子之和等于另一个数。(一个数的真除数是该数的正因子,而不是该数本身。例如,6的真除数是1、2和3。)一对友好数构成周期2的等分序列。一个相关的概念是一个完美数,它是一个等于它自己的适当除数之和的数,换句话说,一个形成周期1等分序列的数。作为周期大于2的等分序列的成员的数字称为社交数字
因此,让你最终失败的是你检查两个数字是否友好的条件。您需要检查n
的所有除数之和是否等于m
和vica verse
int n, m;
int ndivisorsSum = 0;
int mdivisorsSum = 0;
n = 220;
m = 284;
for(int i = 1; i < n; i++){
if (n % i == 0){
ndivisorsSum += i;
}
}
for(int i = 1; i < m; i++){
if (m % i == 0){
mdivisorsSum += i;
}
}
if (ndivisorsSum == m && mdivisorsSum == n) { // Your mistake is here.
System.out.println(n + " and " + m + " are amicable numbers");
}else{
System.out.println(n + " and " + m + " are not amicable numbers");
}
intn,m;
int ndivisorsSum=0;
int mdivisorsSum=0;
n=220;
m=284;
对于(int i=1;i