Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2012, 01:44   #1
neeble
Пользователь
 
Регистрация: 30.10.2011
Сообщений: 12
По умолчанию проверка чисел на простоту

нужна программа (мб кто делал, скачал откудато и тп(исходники необезательны)) которая бы проверяла число представленное ввиде (2^n)-1 на простоту

нужно чтоб работала с большими n (очень большими, хотябы начиная с N>100000)

алгоритм проверки простоты можно даже не 100%
но вот чтоб он работал быстро оч даже желательно=)

ну и предчуствуя что наврятле подобная программа у когото завалялась
задаю след вапрос как это впихнуть в delphi, интересует быстрая работа с огромными числами

если болие конкретно то как возвести число 2 в n степень (где n>100000)
и как потом с ним работать (плюсавть к ниму, минусавать, делить и т д)
neeble вне форума Ответить с цитированием
Старый 10.03.2012, 02:06   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

длинная арифметика в помощь... вот только с быстродействием может не особо хорошо будет... но это можно сказать единственный способ... вот ещё одна реализации длинной арифметики... и возведение в степень это можно рассмотреть как всего лишь умножение))))
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 10.03.2012, 03:07   #3
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Тест простоты Люка - Лемера для чисел Мерсена
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 10.03.2012, 17:36   #4
neeble
Пользователь
 
Регистрация: 30.10.2011
Сообщений: 12
По умолчанию

Код:
using System;

namespace ConsoleApplication2q
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {

                int p = int.Parse(Console.ReadLine());
      
                long M = (1 << p) - 1;
                long L = 4;
                for (int k = 1; k < p - 1; k++)
                    L = (L * L - 2) % M;
                Console.WriteLine(L == 0 ? p + " простое" : p + " не является простым");
            }
            catch { };
            Console.ReadKey();
           
        }
    }
}
я так понимаю для больших N (в данном случае P) этот код неюзабелен да?
как написать этот код с использаванием biginteger
в гугле прочитал что он может хранить сколь угодно большие числа
(попробывал записать перед перемеными вместо Int\long biginteger непомогло
(Не удалось найти имя типа или пространства имен "BigInteger" (пропущена директива using или ссылка на сборку?))

решил дописать System.Numerics тоже непомогло (Имя типа или пространства имен "Numerics" отсутствует в пространстве имен "System" (пропущена ссылка на сборку?))
Код:
using System;
using System.Numerics;

namespace ConsoleApplication2q
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {

                BigInteger p = int.Parse(Console.ReadLine());

                BigInteger M = (1 << p) - 1;
                BigInteger L = 4;
                for (BigInteger k = 1; k < p - 1; k++)
                    L = (L * L - 2) % M;
                Console.WriteLine(L == 0 ? p + " простое" : p + " не является простым");
            }
            catch { };
            Console.ReadKey();

        }
    }
}
все ето я делаю в Microsoft Visual C# 2010 Express

я в с# вообще 0

код был взять отсюда _http://www.cyberforum.ru/csharp-beginners/thread356991.html

Последний раз редактировалось neeble; 10.03.2012 в 18:02.
neeble вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка результатов деления чисел в 2-х столбцах ZSV Microsoft Office Excel 4 06.03.2012 12:33
Проверка чисел на простоту. Не работает условие. krab777 Общие вопросы Delphi 2 06.06.2011 09:33
проверка чисел в разных файлах Magnetic Air Microsoft Office Excel 9 06.05.2011 13:17
Проверка большого нат. числа на простоту PastoriXx Общие вопросы .NET 5 30.05.2010 21:04
Проверка качества датчика псевдослучайных чисел SerG1ON Microsoft Office Excel 0 22.10.2009 15:38