我多年来一直坚持这个问题并且似乎不知道如何完成这个程序。我是编程的初学者,所以我只知道C.我会承认这是一个作业,我不是在寻找答案,但我真的很感激这个问题的一些帮助。这就是我所拥有的:
#include <stdio.h>
#include <math.h>
void main()
{
int low, high, n, count,i;
scanf ("%d %d",&low, &high);
count=0;
n=0;
if (low<=3)
count=count+1;
while (n<low)
{
n=n+6;
}
while (n<high)
{
i=1;
while (i<sqrt(n+1))
{
i=i+2;
if ((n-1)%i==0 || (n+1)%i==0)
continue;
else
count=count+1;
}
n=n+6;
}
printf("the number of twin primes between %d and %d are %d",low, high, count);
}
我是否使用while
循环错误和/或if
语句?我没有被教过用于循环,所以我不能使用它们。我还必须使用除{3,5}
之外的每个孪生素数遵循公式6 +/- 1的事实。
感谢您帮助我。
答案 0 :(得分:0)
以下程序正常运行。
#include <stdio.h>
#include <math.h>
int main(int argc, char *argv[])
{
int low, high, n, count, i;
scanf ("%d %d", &low, &high);
count = 0;
n = 0;
if (low <= 3)
count++;
while (n<low)
n += 6;
while (n < high) {
i = 1;
int flag = 0;
while (i * i < n + 1) {
i++;
if ((n - 1) % i == 0 || (n + 1) % i == 0)
flag = 1;
}
if (!flag)
count++;
n += 6;
}
printf("the number of twin primes between %d and %d are %d", low, high, count);
}
正如您所看到的那样,您需要像旗帜一样的主要检测阶段。