任务描述
编程输入整数M(M<20000)和N(N<10),输出大于M的前N个孪生素数对。孪生素数是指差为2的两个素数。
输入样例:
100 5
输出样例:
101,103
107,109
137,139
149,151
179,181
那我直接把代码贴出来,帮助你理解下
#include <stdio.h>
#include <math.h>
#define MAX 20000
int is_prime(int n) {
int i, limit = sqrt(n);
if (n <= 1) return 0;
for (i = 2; i <= limit; i++) {
if (n % i == 0) return 0;
}
return 1;
}
int main() {
int m, n, i, j, cnt = 0;
scanf("%d%d", &m, &n);
for (i = m + 1; i < MAX; i++) {
if (is_prime(i) && is_prime(i + 2)) {
cnt++;
printf("%d,%d\n", i, i + 2);
if (cnt == n) break;
}
}
return 0;
}
#include <stdio.h>
int isprime(int n)
{
if (n <= 1)
return 0;
for (int i = 2; i*i<=n; i++)
if (n % i == 0)
return 0;
return 1;
}
int main()
{
int m, n, count =0;
scanf("%d%d", &m, &n);
while(count < n)
{
if (isprime(m) && isprime(m + 2))
{
count++;
printf("%d,%d\n", m, m + 2);
m++;
}
}
return 0;
}