问题一:
给出一个闭区间,输出其中多少素数
import java.util.*;
import java.io.*;
import java.text.* ;
import java.math.*;
public class Main
{
static HashMap<String, Integer> map;
static boolean[] visited;
static int len;
static int k;
public static void main(String[] args){
try {
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
String str;
boolean[] notPrime;
while((str = br.readLine()) != null) {
String[] parts = str.split(" ");
int m = Integer.parseInt(parts[0]);
int n = Integer.parseInt(parts[1]);
notPrime = new boolean[n+1];
for(int i = 2; i <= n; i++) {
if(!notPrime[i]) {
for(int j = 2*i; j <= n; j += i) {
notPrime[j] = true;
}
}
}
ArrayList<Integer> list = new ArrayList<>();
for(int i = m; i <= n; i++) {
if(!notPrime[i]) list.add(i);
}
if(list.size() == 0) System.out.println("-1");
else {
System.out.print(list.get(0));
for(int i = 1; i < list.size(); i++) {
System.out.print(" "+list.get(i));
}
System.out.println();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
问题二:
输入一个字符串,输出其中的最长重复子串,要求该子串重复出现的位置不能重叠,若没有输出NULL
import java.util.*;
import java.io.*;
import java.text.* ;
import java.math.*;
public class Main
{
static HashMap<String, Integer> map;
static boolean[] visited;
static int len;
static int k;
public static void main(String[] args){
try {
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
String str;
while((str = br.readLine()) != null) {
int len = str.length();
String res = "NULL";
for(int i = len/2; i >= 2; i--) {
String s = str.substring(0, i);
int j = 0;
for(; j < len; j += i) {
int cur = str.indexOf(s, j);
if(cur != j) break;
}
if(j == len) {
res = s;
break;
}
}
System.out.println(res);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
问题三:
给出椭圆标准方程中的两个参数,输出椭圆周长,精确到小数点1位
不保证做对
import java.util.*;
import java.io.*;
import java.text.* ;
import java.math.*;
public class Main
{
static HashMap<String, Integer> map;
static boolean[] visited;
static int len;
static int k;
public static void main(String[] args){
try {
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
String str;
while((str = br.readLine()) != null) {
String[] parts = str.split(" ");
int a = Integer.parseInt(parts[0]);
int b = Integer.parseInt(parts[1]);
double res = 2*Math.PI*b+4*(a-b);
System.out.printf("%.1f", res);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}