| 描述 |
|
|---|---|
| 知识点 | 数组 |
| 运行时间限制 | 10M |
| 内存限制 | 128 |
| 输入 |
输入两个正整数 |
| 输出 |
输出一个等差数列 |
| 样例输入 | 1 10 |
| 样例输出 | 3 5 7 |
import java.util.*;
public class Main{
public static void main(String[]args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int m=sc.nextInt();
int n=sc.nextInt();
int start = 0; // 最长等差数列的起始值
int maxD = 0; // 最长等差数列的等差
int d = 0; // 等差
int cur = 0; // 当前等差数列的长度
int length = 0; // 等差数列的最终长度
for (int i = m; i <= n; i++) {
if (sushu(i)) {
d = 1;
while (i + d <= n) {
cur = 0;
while (i + cur * d <= n && sushu(i + cur * d)) {
cur++;
}
if (cur > length || cur == length && d > maxD) {
start = i;
maxD = d;
length = cur;
}
d++;
}
}
}
for (int i = 0; i < length-1; i++) {
System.out.print(start + i * maxD+" ");
}
System.out.println(start + (length-1) * maxD);
}sc.close();
}
private static boolean sushu(int num){
if(num<2){return false;}
for(int i=2;i*i<=num;i++){
if(num%i==0){return false;}
}return true;
}
}
本篇介绍了一个算法挑战:在指定区间内找出由素数组成的最大等差数列,并提供了完整的Java实现代码。该算法通过遍历区间内的每个数判断其是否为素数,并以此构建等差数列。
1010

被折叠的 条评论
为什么被折叠?



