在两个值之间找到孪生素数

时间:2015-02-08 04:05:27

标签: c if-statement while-loop

我多年来一直坚持这个问题并且似乎不知道如何完成这个程序。我是编程的初学者,所以我只知道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的事实。

感谢您帮助我。

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);
}

正如您所看到的那样,您需要像旗帜一样的主要检测阶段。