除非在某种情况下,如何从显示中消除数字序列?

时间:2014-05-12 21:50:01

标签: c primes

我目前正在介绍C类。我的导师责成我编写一个程序,找到并显示从11到999的所有素数。这很容易。现在他希望我让程序只显示相同范围内的素数四倍(它们是(11,13,17,19),(101,103,107,109),(191,193,197,199),以及(821,823,827,829))。我理解如何才能检查并显示这四个组知道它们是什么,但我想不出用它来搜索那些特定组的条件。我目前的计划是:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int x, y, PRIME, MAX=999, MIN=011;

    printf("Prime Quadruples\n");

    for(y=MIN+1; y<MAX; y++)
    {
        PRIME = 1;
        for(x=2; x<y; x++)
            if(y%x == 0)
        {
            PRIME = 0;
            break;
        }
        if(PRIME)
            printf("\n%d", y);
    }
    return 0;
}

3 个答案:

答案 0 :(得分:1)

<强>先决条件:

Prime Quadruple(也称为Prime Quadruplet)是一组四个连续素数,其形式为{p,p + 2,p + 6,p + 8}。

素数四倍是{5,7,11,13},{11,13,17,19},{101,103,107,109},{191,193,197,199},{821, 823,827,829},{1481,1483,1487,1489},{1871,1873,1877,1879},{2081,2083,2087,2089}等等。

除了{5,7,11,13}之外的所有这些都遵循一般结构,即&#34; {30n + 11 30n + 13 30n + 17 30n + 19} &#34;在哪里&#39; n&#39;是一些整数。

(注意:不是所有整数值,例如,如果n = 1,则quadruple = {41,43,47,49},其中49不是素数)。

参考:Wikipage


Prime四联的算法:

步骤1:使用通用格式生成四元组(上面以粗体显示)。

步骤2:检查所有四个值是否为素数。

    Step 2a: if yes, then print the values as prime Quadruples.

    Step 2b: if no, discard the quadruples.

步骤3:检查步骤1生成的第四个值是否小于999

    Step 3a: if yes, then go to step 1 and continue.

    Step 3b: if no, then exit.

答案 1 :(得分:0)

您应该能够使用(y / 10)%10来查看第二个数字是什么。然后你可以连续比较四个。从这里开始,使用@ SJuan76的答案来检查4的数组

答案 2 :(得分:0)

使用您现有的程序,您只需要替换在找到素数时会发生什么。

我建议您将找到的最后一个素数保存到变量,而不是打印它。还为以前找到的素数保留了三个变量。然后检查那些变量是否在同一范围内。如果他们打印出来。

这样的东西
        if (PRIME) {
            //printf("\n%d", y);
            lastprime = y; // lastprime1 = lastprime2 = lastprime3 = 0;
            if (samerange(lastprime, lastprime1, lastprime2, lastprime3)) {
                // print them
            }
        }