java - 找到给定数字的最大素数
问题描述
我正在编写这个方法,它应该返回给定数字的最大素数。它工作正常,直到输入 45 并且输出为 15,即使输出应该是 5。我正在努力寻找错误。请帮忙。
public static int getLargestPrime(int number) {
if (number < 0) {
return -1;
}
for (int i = number-1; i > 1; i--) {
if (number % i == 0) {
for (int j = 2; j < i; j++) {
if (i % j == 0) {
continue;
}
return i;
}
}
}
return -1;
}
解决方案
您需要添加一个标志来检查 value 的整除性i
。i
只有当是素数时,它才会保持真实。稍后如果标志仍然为真,您可以返回,i
否则您需要继续迭代
您的代码中发生的情况是,当 i=15 时,内部循环从 2 开始迭代,15%2!=0 因此它跳过了 if 条件并返回 15
for (int i = number-1; i > 1; i--) {
if (number % i == 0) {
bool flag = true;
for (int j = 2; j < i; j++) {
if (i % j == 0) {
flag = false;
break;
}
}
if(flag)
return i;
}
}
推荐阅读
- android - 我必须在 Android Studio 上的“运行”之前按两次“运行”或清理项目
- c - 使用 c 头文件时出现“未定义的引用”错误
- wpf - WPF 样式触发器:在可变宽度网格上使用上下文菜单
- dataframe - Julia 转换数据框列类型
- css - 让滚动条适用于 Firefox
- java - 嗨,我在尝试解决此算法问题时遇到 java.lang.OutOfMemoryError: Java heap space,该怎么办?
- c - 写入联合中的字节数组并从 int 读取以转换 MISRA C 中的值是否合法?
- java - 如何减少以下代码的执行时间?
- java - Spring Boot 后台进程
- c# - 如何在文本框中使用日期日历