Member 13294470 Ответов: 1

Проект euler 60: проблема кода


<pre>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Prime_pair_sets
{
    class Program
    {
        static void Main(string[] args)
        {
            int mc = 5;
            List<int> primes = new List<int>();
            int test = 2;
            int count = 0;
            int test2 = 0;

            while(primes.Count < mc)
            {
                test = MyMath.Here.NextPrime(test);
                int a = 0;
                foreach(int el in primes)
                {
                    if(MyMath.Here.IsPrime(test*Convert.ToInt32(Math.Pow(10,el.ToString().Length))+el)&&             MyMath.Here.IsPrime(el*Convert.ToInt32(Math.Pow(10,test.ToString().Length)) + test))
                    {
                        a++;
                    }
                    else
                    {
                        break;
                    }
                }


                if(a == primes.Count)
                {
                    test2 = test;
                    primes.Add(test);
                    count++;
                }
            }

            foreach(int a in primes)
            {
                Console.WriteLine(a);
            }
        }
    }
}


Как проверить все значения possbile и выбрать то, которое имеет наименьшую сумму?
в коде NextPrime и IsPrime работают отлично они не являются проблемой

Что я уже пробовал:

Я попытался получить 4 нюймбера в Примере .Изменив "mc" в коде на 4, Вы можете получить эти числа. когда это 5 код не работает...

Richard MacCutchan

Вы не объяснили, что должен делать код, и не объяснили, что не работает. Кроме того, следующее утверждение не имеет большого смысла:

if(MyMath.Here.IsPrime(test*Convert.ToInt32(Math.Pow(10,el.ToString().Length))+el)&& MyMath.Here.IsPrime(el*Convert.ToInt32(Math.Pow(10,test.ToString().Length)) + test))

Почему вы обращаетесь test к строке, а затем вычислить что-то на основе длины строки?

Member 13294470

это должно быть в одном ряду, и это делает Сансе

Member 13294470

если у вас есть, например, 3 и 109, вы должны проверить, являются ли 1093 и 3109 простыми числами или нет.

Richard MacCutchan

Ну, вам нужно будет использовать свой отладчик, чтобы выяснить, что происходит, так как ваш код является неполным, поэтому мы не можем его протестировать.

Member 13294470

код работает .
проблема в том, что идея, я думаю, неправильный алгоритм.
у вас есть факбук? Я пришлю Вам NextPrime и IsPrime

Richard MacCutchan

Я не хочу, чтобы вы присылали его мне. Это открытый форум, поэтому вся информация должна содержаться в вашем вопросе.

1 Ответов

Рейтинг:
2

Patrice T

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик-Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]
Отладка кода C# в Visual Studio-YouTube[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Member 13294470

я знаю, что это такое и как им пользоваться

Patrice T

Но вы не можете увидеть, что происходит не так.
"почему это не работает?"
это не информативно.

Member 13294470

ну, думаю, я знаю, в чем дело.
мой код не имеет значения, что такое "mc", первые четыре числа всегда равны 3,7,109,673.
и, может быть, нет больше чисел, с которыми эти числа могли бы быть парой.
новый вопрос...