Pregunte por el código de programación Csharp
Llamar
Console.WriteLine(GoldbachConjecture(6, 100, 5, "{0}={1} {2};"));
//Conjetura de Goldbach
cadena estática pública GoldbachConjecture(int startNumber, int endNumber, int maxLength, string formatString)
{
Resultado de StringBuilder = new StringBuilder () ;
Listlt; intgt; primeNumbers = GetPrimeNumber(endNumber);
//Excluye el número 2
primeNumbers.RemoveAt(0);
p>
//Números pares dentro del intervalo del bucle
int index = 0;
for (int i = Math.Max(6, startNumber); i lt; = endNumber ; i = 2)
{
// Genera el resultado dividido
foreach (int primeNumber in primeNumbers)
{
//Salir del bucle cuando la suma de los dos números exceda el rango
//if ((i - primeNumber) lt; 0)
// break;
//Determina si el otro valor está en la lista de números primos después de restar un número primo del número par actual
if (!primeNumbers.Contains(i - primeNumber))
continuar
// Genera el formato especificado
result.AppendFormat(formatString, i, primeNumber, i - primeNumber ); p>
//Solo salida una vez. Si desea generar todas las posibilidades, descomente la primera línea del bucle y comente la siguiente línea.
break;
}
// Salida de elementos maxLength por línea
if ( index maxLength == 0)
{
resultado.AppendLine();
}
}
return resultado.ToString();
}
//Obtiene todos los números primos (números primos) menores que endNumber
public static Listlt; GetPrimeNumber(int endNumber)
{
Listlt; intgt;primeNumbers = new Listlt ();
primeNumbers.Add(2); i lt ; endNumber; i = 2)
{
bool isPrimeNumber = true
// Juzga si el número primo antes del valor actual es divisible
foreach (int número primo en números primos)
{
//Si es divisible, no es número primo
if ( i NúmeroPrime == 0)
{
esNúmeroPrime = false
break
}
/ / Juicio de raíz cuadrada, reducir el número de operaciones
p>if (primeNumber gt; Math.Sqrt(i))
{
break
p>}
}
//Si es un número primo
if (isPrimeNumber)
{ p>
números primos.Add(i);
}
}
devuelve números primos
}