Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/47: Рейтинг темы: голосов - 47, средняя оценка - 4.74
6 / 6 / 0
Регистрация: 08.04.2017
Сообщений: 18
1

Выяснить, является ли число простым

16.02.2018, 21:43. Показов 9518. Ответов 7

Author24 — интернет-сервис помощи студентам
2.Дано натуральное число. Выяснить, является ли оно простым (простым называется натуральное число, большее 1, не имеющее других делителей, кроме единицы и самого себя). Оператор цикла с параметром не использовать.

Вообще не пойму как решать. В поиске нет ничего подходящего. Циклы фор не нужен. Только вайл и ду вайл.
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.02.2018, 21:43
Ответы с готовыми решениями:

Дано натуральное число. Выяснить, является ли оно простым
Дано натуральное число. Выяснить, является ли оно простым. Оператор цикла с параметром не...

Является ли целое число простым
static void Main(string args) { Console.Write("введите целое число:"); ...

Проверить является ли число простым
Проверить является ли число простым

Проверить является ли число простым
Проверить является ли число простым. Составить программу.

7
3560 / 2501 / 1174
Регистрация: 14.08.2016
Сообщений: 8,206
16.02.2018, 22:55 2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
static void Main(string[] args)
        {
            var number = 31;
            Console.WriteLine(IsPrime(number));
        }
 
        private static bool IsPrime(int number)
        {
            var denom = 1;
            while (++denom < number)
            {
                if (number % denom == 0) return false;
            }
            return true;
        }
1
6 / 6 / 0
Регистрация: 08.04.2017
Сообщений: 18
17.02.2018, 02:59  [ТС] 3
Этот ответ может и верен, но он находится за пределами изученных мною материалов. Нет ли какого более примитивного способа? Так же с циклом вайл или ду вайл.
1
16 / 16 / 9
Регистрация: 13.12.2011
Сообщений: 64
17.02.2018, 08:55 4
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
static void Main(string[] args)
        {
            Console.WriteLine("Введите число");
            int number=Convert.ToInt32(Console.ReadLine());
            int counter = 2;
            while(counter<number/2+1)
            {
                if (number % counter == 0)
                {
                    Console.Write("Число не простое");
                    Console.Read();
                    return;
                }
                counter++;
            }
            Console.Write("Число простое");
            Console.Read();
        }
1
0 / 0 / 0
Регистрация: 30.09.2016
Сообщений: 15
01.01.2019, 00:23 5
С Новым годом!
Извиняюсь, что поднимаю старую тему.
Бьюсь почти день. Пробовал разные варианты решения (последний ниже) с этого форума и прочих. Компилятор все время указывает что "Превышено максимальное время работы". Подскажите, что ему (компилятору) не нравится?

А задание такое:
Входные данные
На вход программе подается натуральное число n ≤ 2*10^9. Проверьте, является ли оно простым.

Выходные данные
Выведите YES или NO в зависимости от ответа на вопрос задачи. Максимальное время работы программы на одном тесте — 0,1 секунды.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace task10
    {
        class Program
        {
            static void Main(string[] args)
            {
                int number=Convert.ToInt32(Console.ReadLine());
                int counter = 2;
                while(counter<number/2+1)
                {
                    if (number % counter == 0)
                    {
                        Console.Write("NO");
                        Console.Read();
                        return;
                    }
                    counter++;
                }
                Console.Write("YES");
            }
        }
    }
0
Модератор
Эксперт .NET
15468 / 10713 / 2787
Регистрация: 21.04.2018
Сообщений: 31,540
Записей в блоге: 2
01.01.2019, 02:58 6
Цитата Сообщение от europe Посмотреть сообщение
Пробовал разные варианты решения (последний ниже) с этого форума и прочих. Компилятор все время указывает что "Превышено максимальное время работы".
Простых методов для быстрой проверки числа на делители не существует. При увеличении числа время работы будет расти пропорционально. На этом построены многие алгоритмы шифрования. Если бы Вы придумали простой и быстрый метод проверки числа на простоту, Вы стали бы миллионером.
При усложнении метода, можно несколько ускорить проверку, но общее время всё равно останется пропорционально числу.

Один из способов ускорения.
Проверяете число на чётность, если оно нечётно, то цикл начинаете с трёх и делители проверяете только нечётные. Это даст ускорение в 2 раза.
C#
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
                if (number % 2 == 0) 
                {
                     Console.Write("NO");
                     return;
                }
                     
                int counter = 3;
                while(counter<number/2+1)
                {
                    if (number % counter == 0)
                    {
                        Console.Write("NO");
                        Console.Read();
                        return;
                    }
                    counter+=2;
                }
                Console.Write("YES");
1
384 / 184 / 107
Регистрация: 07.01.2016
Сообщений: 496
01.01.2019, 09:34 7
europe, определите верхний предел делителя через корень от числа
C#
1
2
3
int maxDiv = (int)(Math.Floor(Math.Sqrt(number));
while(counter < maxDiv)
...
предельное ускорение (наблюдается для чисел вида prime^2) в Math.Sqrt(number)/2 раз
1
0 / 0 / 0
Регистрация: 30.09.2016
Сообщений: 15
01.01.2019, 12:18 8
alexus5, Спасибо, помогло!
0
01.01.2019, 12:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.01.2019, 12:18
Помогаю со студенческими работами здесь

Проверить, является ли число простым?
проверить является ли число простым?

Определить является ли число простым
Здравствуйте! Подскажите, как быстро в приложении определить является ли число простым или нет?

Определить, является ли введенное число простым
Надо ввести целое число а программа должна ответить. 1. Простое число или нет. 2. Идеальное число...

Программа проверки является ли число простым
Написать программу в Visual Studio которая проверяет числа введенное пользаветелем на простоту. Код...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru