Red de conocimiento informático - Conocimiento del nombre de dominio - ¡Urgente! ! ! ! ! ! ! ! Maestros de problemas del lenguaje C, por favor entren.

¡Urgente! ! ! ! ! ! ! ! Maestros de problemas del lenguaje C, por favor entren.

Para atraer nuevas ideas, utilicé la forma más sencilla y eficiente de implementarla:

/* Entre los números primos menores que 10, existe una secuencia aritmética compuesta por 3, 5, y 7,

* Entre los números primos menores que 30, existe una secuencia aritmética compuesta por 11, 17, 23 y 29.

* Intente encontrar la secuencia aritmética más grande compuesta de números primos en el intervalo (es decir, la secuencia aritmética contiene la mayor cantidad de números primos) e imprímala.

*/

#include

#define MIN_NUMBER 100

#define MAX_NUMBER 1000

// Determina si el número es primo. Si no es un número primo, devuelve 0.

int is_prime(int iTest)

{

if (2 > iTest || iTest % 2 = = 0)

{

devolver 0;

}

int i = 0;

para ( i = 3; i < iPrueba; i += 2)

{

si (iPrueba % i == 0)

{

devuelve 0 ;

}

}

devuelve 1;

}

//

int get_prime_seq(int firstP, int iStep)

{

int iLen = 0;

for (iLen = 0; iLen < MAX_NUMBER - MIN_NUMBER; iLen++ )

{

if (0 == is_prime(firstP + iStep * iLen))

{

return iLen;

}

}

return 0;

}

// Devuelve el "primo máximo lista de números" comenzando desde firstP La longitud de

int get_max_prime_seq(int firstP, int *pStep)

{

int iLen = 0;

int iStep = 1 ;

int iTmpStep = 1;

for (iTmpStep = 1; iTmpStep < MAX_NUMBER - MIN_NUMBER; iTmpStep++)

{

int iTmpLen = get_prime_seq(firstP, iTmpStep);

if (iTmpLen > iLen)

{

iLen = iTmpLen;

iStep = iTmpStep;

}

}

*pStep = iStep;

devuelve iLen;

}

int main(int argc, char* argv[])

{

int iP = MIN_NUMBER // Registra el primer primo; número de "lista de números primos máximos"

int

iLen = 0; // Registra la longitud de la "lista de números primos máximos"

int iStep = 1 // Registra la tolerancia de la "lista de números primos máximos"

int; i = 0;

int iTmpP = 0; // enumeración p

for (iTmpP = MIN_NUMBER; iTmpP < MAX_NUMBER; iTmpP++)

{

int iTmpStep = 0; // Paso temporal

int iTmpLen = 0; // Len temporal

iTmpLen = get_max_prime_seq(iTmpP, &iTmpStep);

if (iTmpLen > iLen)

{

iP = iTmpP;

iLen = iTmpLen;

iStep = iTmpStep;

}

}

for (i = 0; i < iLen; i++)

{

printf ("%d\ n", iP + iStep * i);

}

devuelve 0;

}

Sin estricto depurando, el resultado es:

199

409

619

829

1039

1249

1459

1669

1879

2089