Loading...
Atanasov_88 avatar Atanasov_88 39 Точки

Problem 8. Prime Number Check

Колеги, моля за помощ, съдействие, обяснение или още нещо...Знам, че сигурно тази задача е елементарна за голяма част от форума, но просто не мога да се справя. Къде бъркам. След проверките съм сигурен, че трябва да използвам оператора && в този случай, защото и двете проверки трябва да са верни. Но ми изкарва всичко true...

 

using System;

class DividedBySevenandFive
{
    static void Main()
    {
        int n = int.Parse(Console.ReadLine());

        bool primeNumber = (n / n == 1 && n / 1 == n);

        Console.WriteLine(primeNumber ? true : false);
    }
}

Тагове:
2
Programming Basics
S.Iliev avatar S.Iliev 47 Точки

Колеги имам нужа от помощ и насоки.

Написах това като решение на осма задача, работи, но не ми харесва. Мъчих се само с тернарен оператор да я реша, но не успявам. Някакви насоки?

http://pastebin.com/CRgqAvxk

using System;

class PrimeNumberCheck
    {
        static void Main()
        {
            int inputNumber = int.Parse(Console.ReadLine());
            if (inputNumber == 1)
            {
                Console.WriteLine("false");
            }
            else if (inputNumber == 2 || inputNumber == 3)
            {
                Console.WriteLine("true");
            }
            else
            {
                Console.WriteLine(inputNumber%2 == 1 && inputNumber%3 == 1 ? "true" : "false");
            }
        }
    }

 

0
26/06/2015 11:07:25
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Здравей Светославе,

трябват ти много делители един след друг, не 2, не 2 и 3....

тук пише колко и кои делители ти трябват само за числата до 100...

https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes

А този код използва точно алгоритъма на Ератостен:

http://codereview.stackexchange.com/questions/62139/sieve-of-eratosthenes-implementation-is-running-slowly

маха всички числа, които са кратни на две, после с два вложени цикъла

for(int x = 2; x < 10000;x++)
        {
            for(int y = x * 2;y < 10000;y = y + x)

y = x * 2 ...стъпка y = y + x (така получаваш всички числа кратни на X, и ги махаш - за кратните на 2, 3, ..... до колкото искаш. И които останат не махнати са прости числа (prime numbers).

0
26/06/2015 12:55:49
S.Iliev avatar S.Iliev 47 Точки

Тоест без For-цикъл няма вариант за решение?

0
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Ами трябват ти дълъг списък от делители, ако не искаш да използваш for цикъл, можеш да вземеш от wikipedia лик-а всички делители и да разделиш на всеки от тях, но е неприятно - няма смисъл - for цикъла е много удобен тук.

Тернарен оператор до 100: Console.WriteLine(inputNumber % 2 == 0 && inputNumber % 3 == 0 && inputNumber % 5 == 0 && inputNumber % 7 == 0 ? "false" : "true"); (заменя твоя ред в else{ }

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