我目前正在介绍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;
}
答案 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
}
}