Професионална програма
Loading...
Irena_Panayoss avatar Irena_Panayoss 2 Точки

Глава 6: Цикли - алтернативно решение на задачата за прости числа

Здравейте,

Аз се обучавам самостоятелно по книгата "Въведение в програмирането със С#" и съм стигнала до глава "Цикли". 

Задачата за прости числа много ме заинтригува и бих искала да предложа алтернативно решение.

Моята теория е, че единственото, което е нужно да се провери, е дали числото се дели на 2, 3, 5 или 7!

Ако се дели примерно на 9, 11, 13, и т.н. то със сигурност се дели и поне на едно от горепосочените 4 числа и затова няма смисъл да промверяваме с други делители. 

Моят код е: 

​
            Console.WriteLine("Checking if a number is prime \n");
            Console.Write("Enter a positive number: ");
            int num = int.Parse(Console.ReadLine());
            int divider = 2;    
            if ((num <= 1) || (num % 2 == 0) || (num % 3 == 0) || (num % 5 == 0) || (num % 7 == 0))
            {
                Console.WriteLine("The number is not prime.\n\n");
            }
            else             
            {
                if (!(num % divider == 0))
                {
                    do
                    {
                        divider = divider + 2;
                    }
                    while (divider <= 7);
                }
                Console.WriteLine("The number is prime.\n\n");                              
            }
Click and drag to move
​

Изглежда работи! smiley Тествах го много пъти. 

Много бих се радвала, ако някой го коментира, тъй като това е моята първа самостоятелна програма. 

Благодаря Ви!

Ирена

 

 

Тагове:
1
Programming Basics
Filkolev avatar Filkolev 4486 Точки

Зависи от ограниченията на задачата, но по принцип решението ти не е правилно за числа над 121. 

Логиката (когато знаеш кое е най-голямото число, което проверяваш) е, че то е просто, да го кръстим n, ако няма прост делител в интервала [2, sqrt(n)]. Корен от 100 е 10, а простите числа между 2 и 10 са добре известни. Така че проверката дали n се дели без остатък на 2, 3, 5 и 7 е достатъчна. Така в else може директно да кажеш, че числото е просто.

Хубаво е в такъв случай да кажеш на потребителя в какъв диапазон се очаква да е входът и да направиш и съответните проверки след това дали е въведена коректна стойност.

2
Irena_Panayoss avatar Irena_Panayoss 2 Точки

Благодаря за бързия отговор! Разбирам. 

1