Nested Loops More Exercises - Exercise
Здравейте!
Задача 06. Prime Pairs ме затрудни. Въпреки че при въвеждането на примернитр входове ми излиза верен изход не разбирам защо в Judge ми дава едва 20/100. На всичкото отгоре ми изписва Zero test #2 (Incorrect answer)! Това е решението ми: Solution #10758290
using System;
namespace _06._Prime_Pairs
{
class Program
{
static void Main(string[] args)
{
int firstPairStart = int.Parse(Console.ReadLine());
int secondPairStart = int.Parse(Console.ReadLine());
int firstDiff = int.Parse(Console.ReadLine());
int secondDiff = int.Parse(Console.ReadLine());
int firstDigitStart = firstPairStart / 10;
int firstDigitEnd = (firstPairStart + firstDiff) / 10;
int secondDigitStart = (firstPairStart) % 10;
int secondDigitEnd = (firstPairStart + firstDiff) % 10;
int thirdDigitStart = secondPairStart / 10;
int thirdDigitEnd = (secondPairStart + secondDiff) / 10;
int fourthDigitStart = (secondPairStart) % 10;
int fourthDigitEnd = (secondPairStart + secondDiff) % 10;
//Console.WriteLine(firstDigitStart);
//Console.WriteLine(firstDigitEnd);
//Console.WriteLine(secondDigitStart);
//Console.WriteLine(secondDigitEnd);
//Console.WriteLine(thirdDigitStart);
//Console.WriteLine(thirdDigitEnd);
//Console.WriteLine(fourthDigitStart);
//Console.WriteLine(fourthDigitEnd);
for (int d1 = firstDigitStart; d1 <= firstDigitEnd; d1++)
{
for (int d2 = secondDigitStart; d2 <= secondDigitEnd; d2++)
{
for (int d3 = thirdDigitStart; d3 <= thirdDigitEnd; d3++)
{
for (int d4 = fourthDigitStart; d4 <= fourthDigitEnd; d4++)
{
int firstPair = d1 * 10 + d2;
int secondPair = d3 * 10 + d4;
bool firstIsPrime = true;
bool secondIsPrime = true;
for (int i = 2; i < firstPair; i++)
{
if (firstPair % i == 0)
{
firstIsPrime = false;
break;
}
}
for (int i = 2; i < secondPair; i++)
{
if (secondPair % i == 0)
{
secondIsPrime = false;
break;
}
}
if (firstIsPrime && secondIsPrime)
{
Console.WriteLine($"{d1}{d2}{d3}{d4}");
}
}
}
}
}
}
}
}
Благодаря ти!
Доста по опростено от моето решение! Сега ще го тествам.
п.с. и още една идея за решение...
===================================
if (pair1 % 2 != 0 && pair1 % 3 != 0 && pair1 % 5 != 0 && pair1 % 7 != 0 && pair2 % 2 != 0 && pair2 % 3 != 0 && pair2 % 5 != 0 && pair2 % 7 != 0)
{
Console.WriteLine($"{pair1}{pair2}");
}
===================================
Проверките за просто число ги опростявам. Двойките са ограничени от условието до 90, и няма смисъл от циклите за проверка дали двойките са прости числа.
Поздрави,
Иван