Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 28.06.2016
Сообщений: 1

Найти все простые числа Мерсена

28.06.2016, 00:38. Показов 2124. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Дано натуральное число n. Найти все простые числа Мерсена (простое число называется числом Мерсена, если его можно представить в виде 2^p-1, где p тоже простое число.
Создать приложение нужно в оконном режиме.

Извините, ещё не разобрался как работать в редакторе форума.
Мой преподаватель по информатике сказал, что нужно написать метод, который будет сам определять эти простые числа и выводить в ArrayList, в диапазоне от 1 до 10000.

Вот что получилось у меня:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        ArraList arr = new ArraList();
 
        private void button1_Click(object sender, EventArgs e)
        {
            arr.n = Convert.ToInt32(textBox1.Text);
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            arr.Method();
        }
 
 
        private void button3_Click(object sender, EventArgs e)
        {
            arr.OutPut(arr.A, listBox2);
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            Close();
        }
     }
    public class ArraList
    {
        public int n;
        public ArrayList A { get; set; }
        public int [] mass = new int[] { 8192, 2048, 512, 128, 32, 8, 4, 2, 1 };
        public void Method()
        {
            A = new ArrayList { };
            for (int p = mass.Length-1; p >= 0; p = p - 1)
            {
                if (n > mass[p])
                {
                    A.Add(mass[p] - 1);
                }
            }
        }        
        public void OutPut(ArrayList x, ListBox lb)
        {
            int i;
            lb.Items.Clear();
            if (x.Count == 0)
                lb.Items.Add("пусто");
            else
            {
                for (i = 0; i <= x.Count - 1; i++)
                {
                    lb.Items.Add(x[i]);
                }
            }
        }
    }
 
 
}

Спасибо за внимание.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.06.2016, 00:38
Ответы с готовыми решениями:

Найти все меньшие n числа Мерсена
Дано натуральное число n. Найти все меньшие n числа Мерсена. (Простое число называется числом Мерсена, если оно может быть представлено в...

Найти все меньшие n числа Мерсена
В работе необходимо выделить из основной задачи логически законченные подзадачи и реализовать их с помощью процедур или функций....

Найти все меньшие n числа Мерсена
Дано натуральное число n. Найти все меньшие n числа Мерсена. (Простое число называется числом Мерсена, если оно может быть представлено в...

1
964 / 485 / 241
Регистрация: 02.06.2016
Сообщений: 760
28.06.2016, 09:58
Skradg,
Кликните здесь для просмотра всего текста
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
namespace MersenneNumbers
{
    // Тип для чисел с которыми работаем
    // Int32 это int
    // UInt64 это ulong
    // System.Numerics.BigInteger для больших чисел
    using Number = UInt64;
 
    class Program
    {
        /// <summary>
        /// Создает ArrayList Содержащий простые числа Мерсенна не превышающие 10000
        /// </summary>
        ArrayList GetArrayList()
        {
            var list = new ArrayList();
            var M = MersenneNumbers()      // числа Мерсена
                .TakeWhile(m => m < 10000) // Не превышающие 10000
                .Where(LucasTest);         // Проходящие тест Люка
 
            foreach (var x in M) list.Add(x);
            return list;
        }
 
        /// <summary> Последовательность Люка — Лемера по модулю m </summary>
        IEnumerable<Number> LucasNumbers(Number m)
        {
            for (Number l = 4; ;)
            {
                yield return l %= m;
                l = (l * l - 2) % m;
            }
        }
 
        /// <summary> Числа Мерсенна </summary>
        IEnumerable<Number> MersenneNumbers()
        {
            for (int q = 1; ; q++)
            {
                yield return ((Number)1 << q) - 1;
            }
        }
 
        /// <summary> Тест простоты Люка для чисел Мерсена x = 2^(q + 1) - 1 </summary>
        bool LucasTest(Number x, int q)
        {
            if (q < 2) return q == 1;
            return LucasNumbers(x).ElementAt(q - 1) == 0;
        }
 
        static void Main()
        {
            ArrayList list = new Program().GetArrayList();
            foreach (var x in list) Console.WriteLine(x);
            Console.ReadLine();
        }
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.06.2016, 09:58
Помогаю со студенческими работами здесь

Найти все числа Мерсена, меньшие заданного n
Не могли бы написать код программы (если можно без ООП и с использованием if или switch или for или......... &quot;'элементарных&quot;...

Процедуры и функции: найти все меньшие n числа Мерсена
Дано натуральное число n. Найти все меньшие n числа Мерсена. (Простое число называется числом Мерсена, если оно может быть представлено в...

Дано натуральное число n: найти все меньшие n числа Мерсена
Переведите пожалуйста с С++ на С# Простое число называется числом Мерсена, если оно может быть представлено в виде 2p-1, где р -...

Перебором делителей найти простые числа в указанном диапазоне, и вывести все простые числа в поле Memo
Мне нужна программка на Delphi, которая простым перебором делителей находит простые числа в указанном диапазоне и выводит все простые числа...

Найти все трехзначные простые числа. Определить функцию, позволяющую распознавать простые числа
помогите пожалуйста с программой Найти все трехзначные простые числа. Определить функцию, позволяющую распознавать простые числа.


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru