Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нечотные числа 
:(
    Опции темы
kurzon
Дата 3.11.2007, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 307
Регистрация: 12.8.2007

Репутация: 0
Всего: -11



Как проверить четное или нет число?
Делением на 2, или есть другой способ?
И как проверить число есть простым или нет? ( by http://ru.wikipedia.org/wiki/%D0%9F%D1%80%...%81%D0%BB%D0%BE )
Может у кого есть отличный алгоритм?

Это сообщение отредактировал(а) kurzon - 3.11.2007, 01:41
PM MAIL   Вверх
kurzon
Дата 3.11.2007, 02:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 307
Регистрация: 12.8.2007

Репутация: 0
Всего: -11



Код

 string str = this.t_Check.Text;
            string f="";
            int value = Convert.ToInt32(str);
            for(int i=2;i<=Math.Sqrt(value);i++) 
            {
               if (value / i == (int)value / i)
                {
                    f = "Ето не простое число";

                    break;
                }
               else f = "Ето простое число"; 


            }
            MessageBox.Show(f);

В чем тут ошибка?

Это сообщение отредактировал(а) kurzon - 3.11.2007, 02:22
PM MAIL   Вверх
Xenon
Дата 3.11.2007, 02:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 3
Всего: 50



Код

int var = 2;
Console.WriteLine(var % 2 == 0 ? "Четное" : "Нечетное");                        


Код

static bool is_simple(int num)
{
    int divider = 1;
    if (num % 2 == 0) divider = 0;
    while ( (divider+=2) <= Math.Floor(Math.Sqrt(num)) )
        if (num % divider == 0) return false;
    return true;

}



--------------------
user posted image  
PM MAIL   Вверх
kurzon
Дата 3.11.2007, 02:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 307
Регистрация: 12.8.2007

Репутация: 0
Всего: -11



Пачиму кагда когда я вожу 1 либо 58, мене виводит true.
1 и 58 есть не простые числа, а оно пишет что простые.

  
Код

static bool is_simple(int value,out bool bom)
        {
         
            int divider = 1;
            if (value == 1) return bom = false;
            else
            {
                if (value % 2 == 0) divider = 0;
                while ((divider += 2) <= Math.Floor(Math.Sqrt(value)))
                    if ((value % divider == 0)) return bom = false;
                return bom = true;
            }
        }
        private void b_Check_Click(object sender, EventArgs e)
        {
            string str = this.t_Check.Text;
            int value = Convert.ToInt32(str);
            is_simple(value,out bom);
       
        }


Это сообщение отредактировал(а) kurzon - 3.11.2007, 12:54
PM MAIL   Вверх
Servena
Дата 3.11.2007, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 24.7.2007
Где: Днепропетровск

Репутация: нет
Всего: 14



Спробуй так:

Код

using System;
namespace Simple
{
    //Программа предполагает, что входное число больше 2.
    //Такие числа как 1, 2 - обрабатывай вручную.
    class Program
    {       
        static void Main(string[] args)
        {
            int value=11; //Число(входной параметр) - меняй его чтобы попробовать разные числа            

            //Идея - в цикле пытаемся разделить value на все числа кроме 1 и самого value.
            //Если оно разделится без остатка - значит оно "Непростое".
            for(int i=2; i<value;i++)
                if (Convert.ToDouble(value) % i == 0)
                {
                    Console.WriteLine("Непростое");
                    Console.ReadLine();
                    return;
                }
            Console.WriteLine("Простое");            
            Console.ReadLine();
        }
    }
}


В прикладі використовувався консольний проект.
PM MAIL   Вверх
Xenon
Дата 3.11.2007, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 3
Всего: 50



Да, про единицу я забыл, а вот с 58 у меня нормально.


--------------------
user posted image  
PM MAIL   Вверх
Servena
Дата 3.11.2007, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 24.7.2007
Где: Днепропетровск

Репутация: нет
Всего: 14



Ксенон, у меня тоже проблемы с 58 в твоем алгоритме.

Добавлено через 5 минут и 15 секунд
Сори, беру свои слова обратно.
PM MAIL   Вверх
kurzon
Дата 3.11.2007, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 307
Регистрация: 12.8.2007

Репутация: 0
Всего: -11



Пажалуста памагите сделать:

Создайте в вашем классе частное поле(массив на 100000 элементов), которое будет содержать таблицу простых чисел, и конструктор, который будет ее инициализировать простыми числами. Первое простое число таблицы – 2. Все последующие числа необходимо сгенерировать, перебирая нечетные числа и проверяя, являются ли они простыми(делите число на те простые числа, которые уже есть в таблице и какие меньше корня из перевіряємого числа).


Это сообщение отредактировал(а) kurzon - 3.11.2007, 14:51
PM MAIL   Вверх
Servena
Дата 3.11.2007, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 24.7.2007
Где: Днепропетровск

Репутация: нет
Всего: 14



А тебе так будет интересно?
Может давай так: у тебе сейчас есть все кусочки, попробуй их сложить вместе и выкладывай.
А мы поможем их подправить.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0486 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.