这是一条列出孪生素数对的题目,自查认为是for循环有误,但检查不出
孪生素数
相差为2的两个素数称为孪生素数。例如,3与5,41与43等都是孪生素数。设计程序求出指定区间上的所有孪生素数对。区间上限和下限由键盘获取。
程序运行示例如下:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int Prime(int n);
int main()
{
long c, d, flagc, flagd, begin, end;
int i, j, count = 0;
printf("please input c,d(c>2):\n");
scanf("%ld%ld\n", &c, &d);
for (begin = c; begin <= (d - 2); begin++)/大循环为从begin开始递增一/
{
flagc = 1;
flagd = 1;
for (i = 2; i <= sqrt(begin); i++)/该嵌套循环为判断begin是否为素数/
{
if (begin % i == 0)
{
flagc = 0;
break;
}
for (end = begin + 2, j = 2; j <= sqrt(end); j++)/该嵌套循环为判断begin+2是否为素数/
{
if (end % j == 0)
{
flagd = 0;
break;
}
}
if (flagc == 1 && flagd == 1)/判断对数/
count = count + 1;
printf("(%ld,%ld)\n", begin, end);
}
}
printf("total=%d\n", count);
}
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int c, d, flagc, flagd, begin, end;
int i, j, count = 0;
printf("please input c,d(c>2):\n");
scanf("%d,%d", &c, &d);
for (begin = c; begin <= (d - 2); begin++)
{
flagc = 1;
flagd = 1;
for (i = 2; i <= sqrt(begin); i++)
{
if (begin % i == 0)
{
flagc = 0;
break;
}
}
for (end = begin + 2, j = 2; j <= sqrt(end); j++)
{
if (end % j == 0)
{
flagd = 0;
break;
}
}
if (flagc == 1 && flagd == 1) {
count = count + 1;
printf("(%d,%d)\n", begin, end);
}
}
printf("total=%d\n", count);
}
for循环有点小问题,我帮你改好了,你看看