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 4482 Точки

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

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

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

2
Irena_Panayoss avatar Irena_Panayoss 2 Точки

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

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.