题目描述
编程输入整数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 <stdbool.h>
bool isPrime(int num) {
if (num <= 1)
return false;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0)
return false;
}
return true;
}
void findTwinPrimes(int M, int N) {
int count = 0;
int num = M + 1;
while (count < N) {
if (isPrime(num) && isPrime(num + 2)) {
printf("%d,%d\n", num, num + 2);
count++;
}
num++;
}
}
int main() {
int M, N;
printf("请输入整数M和N(以空格分隔):");
scanf("%d %d", &M, &N);
findTwinPrimes(M, N);
return 0;
}
在上述代码中,isPrime
函数用于判断一个数是否为素数。findTwinPrimes
函数根据输入的 M 和 N,找到大于 M 的前 N 个孪生素数对并输出。main
函数用于接收用户输入的 M 和 N,并调用 findTwinPrimes
函数。
您可以直接运行上述代码,根据提示输入 M 和 N 的值,即可输出相应的孪生素数对。
运行截图
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END