C语言(19分,超时一个):
#include <stdio.h>
int isPrime(int num) {
if (num == 2) {
return 1;
}
for (int i = 2; i <= num / 2; i++) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int M, N;
scanf("%d %d", &M, &N);
int count = 0;
int flag = 1;
int i = 2;
while (count < N) {
if (isPrime(i)) {
count++;
if (count >= M) {
if (flag++ % 10 == 0) {
printf("%d\n", i);
} else if (count == N) {
printf("%d", i);
} else {
printf("%d ", i);
}
}
}
i++;
}
return 0;
}
Java语言(15分,部分超时):
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int M = sc.nextInt();
int N = sc.nextInt();
int[] primes = new int[10000];
int flag = 1;
int count = 0;
for (int i = 2; count < N; i++) {
boolean isPrime = true;
for (int j = 0; count > 0 && primes[j] * primes[j] <= i; j++) {
if (i % primes[j] == 0) {
isPrime = false;
}
}
if (isPrime) {
primes[count++] = i;
}
}
for (int i = M; i < N; i++) {
System.out.print(primes[i - 1]);
System.out.print((i - M + 1) % 10 == 0 ? "\n" : " ");
}
System.out.print(primes[N - 1]);
}
}