【发布时间】:2019-10-02 14:10:52
【问题描述】:
我正在尝试制作一个检测主要因素的程序。流程如下:
- 检测数字是否为因数
- 如果是因子/f,则从f-1、f-2、...开始依次划分
- 对于任何有余数的除法,证明计数器将递增
- 如果最终证明计数器 = f-2,它将通知 PRIME FACTOR
但是,当程序运行时,证明计数器部分的“for循环”将不起作用。
例如,当因子为 6 时,证明仅适用于:
- 6 % 5
- 6 % 4
- 证明计数器 = 2
然后跳起来寻找另一个因素
我想知道为什么会这样?
(如果这个问题很混乱,请见谅)
int N = input.nextInt();
for(int i =N; i>1; i--){
if(N%i == 0){
f = i;
int proof = 0;
System.out.println("factor:" + f);
for(int j = f-1; j>=1; j--){
if(f%j != 0){
proof++;
System.out.println("proved when j is " + j);
}
}
System.out.println("no of proof"+proof);
if(proof == f-2){
System.out.println(f + "is PRIME");
}
}
}
【问题讨论】:
-
如果满足条件
proof == f - 2,则跳出循环。 -
@DrewReese 证明计数器出错了,所以满足条件的机会不大,哈哈
-
最好提供一个minimal reproducible example,其中包括
f、proof等的声明。此外,还请提供它不起作用的示例、您的预期以及什么你遇到了这些情况。 -
proof的初始值是什么/在哪里?每次迭代在哪里重置? -
@Thomas 嗨,我尝试包含输出屏幕截图