(基础)单个字符的大小写转换
如果 n 是素数,且 n+2 也是素数,则称为孪生素数。
输入:
下限范围 上限范围
输出:
在此范围内的全部孪生素数
样例:
序号 | 测试输入 | 期待的输出 | 额外进程 |
---|---|---|---|
1 | 10 20↵ | 11,13↵ 17,19↵ | 0 |
2 | 100 200↵ | 101,103↵ 107,109↵ 137,139↵ 149,151↵ 179,181↵ 191,193↵ 197,199↵ | 0 |
3 | 9000 10000↵ | 9011,9013↵ 9041,9043↵ 9239,9241↵ 9281,9283↵ 9341,9343↵ 9419,9421↵ 9431,9433↵ 9437,9439↵ 9461,9463↵ 9629,9631↵ 9677,9679↵ 9719,9721↵ 9767,9769↵ 9857,9859↵ 9929,9931↵ | 0 |
思路
从下限到上限,不断判断相邻两个奇数是否为素数,发现一对就输出一对
判断一个素数是否是素数可以参考【中学】找出最大素数
代码
#include<stdio.h>
#include<math.h>
int prime(int n)
{
if (n == 2 && n == 3) return 1;
if (n % 6 == 5 || n % 6 == 1)
{
int t = sqrt(n) + 1, i;
for (i = 2; i < t; i++)
{
if (n % i == 0)
{
return 0;
}
}
return 1;
}
return 0;
}
main()
{
int a, b;
scanf("%d %d", &a, &b);
for (int i = a / 2 * 2 + 1; i < b + 1; i += 2)
{
if (prime(i) && prime(i + 2))
{
printf("%d,%d\n", i, i + 2);
i += 2;
}
}
}