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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.08.2011, 18:56   #51
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну дык значит надо искать 3 делителя ) Например, так (нахождение простых чисел среди чисел от 1 до 999):
Код:
for (int i=1; i<1000; i++)
   for (int j=2; j<i; j++);
      if (i % j == 0) 
          { принт (i " — не простое число"); break; }
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 06.08.2011 в 19:02.
Alex11223 вне форума Ответить с цитированием
Старый 09.08.2011, 14:51   #52
Faridik
Форумчанин
 
Аватар для Faridik
 
Регистрация: 08.08.2008
Сообщений: 117
По умолчанию

Задача: Найти все натуральные числа, не превосходящие N<1000, и делящиеся на каждую из своих цифр. Написал какой-то непонятный код.
Код:
int a ,b,c,p,m,max;
      for (p=10;p<1000;p++)
      {
      a=p%10;
      b=(p/10)%10;
      c=p/100;
      if (a!=0 & b!=0 & c!=0)
      if (p>=100 && p<1000)
      while ((p%a==0) && (p%b==0) && (p%c==0))
      {
          System.out.println (p);
          p++;
          
          break;
      }
      if (a!=0 & b!=0)
      if (p>=10)
      while ((p%a==0) && (p%b==0))
      {
          System.out.println (p);
          p++;
          
          break;
      }
     }
Работает правильно.Но вот вопрос.Почему если убрать
Код:
 if (a!=0 & b!=0)
      if (p>=10)
      while ((p%a==0) && (p%b==0))
      {
          System.out.println (p);
          p++;
          
          break;
      }
он перестает правильно работать?Какое оно имеет отношение и как можно преобразовать код,чтоб получился нормальный,а не такой набор операторов...))

Где следует прописать
Код:
System.out.println(n);
чтобы выводилось то что надо из цикла
Код:
for (m=1;m<n/2;m++)
        {
          if (n%m==0)
          {
           
          }
         
        }
Когда код
Код:
int i,n,m;
      for (n=0;n<100;n++)
      {
      for (m=1;m<n/2;m++)
        {
          if (n%m==0)
          {
          System.out.println(n);
          }
         
        }
      }
такой,выводятся все числа.

Последний раз редактировалось Stilet; 12.08.2011 в 21:22.
Faridik вне форума Ответить с цитированием
Старый 12.08.2011, 18:55   #53
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
то что надо
А что надо?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.08.2011, 18:57   #54
Faridik
Форумчанин
 
Аватар для Faridik
 
Регистрация: 08.08.2008
Сообщений: 117
По умолчанию

Надо то что при этом
Код:
if (n%m==0)
выполняется.Ну надо чтоб не выводились не все числа.
Faridik вне форума Ответить с цитированием
Старый 12.08.2011, 19:03   #55
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А задача какая? Проверил на С++, все правильно выводит. Если остаток от деления n на m == 0, то выводит n. Добавьте там еще вывод m чтобы в этом убедиться.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.08.2011, 19:06   #56
Faridik
Форумчанин
 
Аватар для Faridik
 
Регистрация: 08.08.2008
Сообщений: 117
По умолчанию

Находит простые числа.На С++ выводит простые числа от 1 до 100?У меня все числа по несколько раз выводит,а простые числа по одному разу.А надо чтоб выводил только простые.
Faridik вне форума Ответить с цитированием
Старый 12.08.2011, 19:21   #57
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Во-первых все числа делятся на 1. Даже простые. Поэтому надо как-то так: for (m=2;m<n/2;m++)
Чтобы выводилось только 1 раз можно, например, сделать так:
Код:
   for (n=1;n<100;n++)
      {
      for (m=2;m<n/2;m++)
        {
          if (n%m==0)
          {
             System.out.println(n);
             break; //завершение цикла
          }
         
        }
      }
Но так вы найдите не простые числа, а наоборот...э...непростые) и то не все (например, 4).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 12.08.2011 в 19:44.
Alex11223 вне форума Ответить с цитированием
Старый 12.08.2011, 19:30   #58
Faridik
Форумчанин
 
Аватар для Faridik
 
Регистрация: 08.08.2008
Сообщений: 117
По умолчанию

Да,я с вами согласен,но не знаю почему этот алгоритм выводит простые числа по одному разу,т.е. если просмотреть все,можно найти простые.Но это неразумно,надо чтоб сразу выводились простые.А как вы сказали,не работает.
Faridik вне форума Ответить с цитированием
Старый 12.08.2011, 19:34   #59
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Что не работает? break? Не компилируется?
Цитата:
этот алгоритм выводит простые числа по одному разу,т.е. если просмотреть все,можно найти простые.
Он выводит все числа от 1 до 99. Просто простые числа делятся только на единицу поэтому и выводятся только 1 раз.
Добавьте вывод m и все поймете
Код:
if (n%m==0)
          {
             System.out.print(n);
             //пробел или какой-нибудь другой разделитель, не знаю как в Java, System.out.print("   "); ?
             System.out.println(m);
 
          }
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 12.08.2011 в 19:42.
Alex11223 вне форума Ответить с цитированием
Старый 12.08.2011, 19:39   #60
Faridik
Форумчанин
 
Аватар для Faridik
 
Регистрация: 08.08.2008
Сообщений: 117
По умолчанию

От break никакого толку.Все числа от 1 до 99 выводятся. ))
Faridik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос начинающего по компилятору Tmod Софт 7 28.08.2010 22:10
Вопрос от начинающего ProGus Microsoft Office Excel 1 10.08.2010 14:30
Инструментарий начинающего... Всеслав Общие вопросы C/C++ 6 24.12.2008 15:39
Портфолио начинающего программиста С++ Марья Свободное общение 1 12.06.2008 08:16