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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2012, 16:32   #21
Eshiru
Новичок
Джуниор
 
Регистрация: 27.11.2012
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
извините, я не понял ваших рассуждений... Какая разница, меньше число 10 или нет?! От этого что-то меняется?! Вам нужно искать делители. числа. Если они есть (от 2 и до чего-угодно), значит число НЕ ПРОСТОЕ.
Откуда у Вас возникла (ошибочная) идея, проверять числа меньше 10 и больше десяти по разным алгоритмам?! Вот в этом и есть ваш основной "косяк"!
ферштейн?
В моем случае "і" - это не только управляющая цикла, но еще и ДЕЛИТЕЛЬ. И именно как делитель число "i" перебирается максимум до 9-ти. Или пока "i" не больше и не равно Числу. Или пока результат деления по модулю (Число%i) не будет равно нулю.
Eshiru вне форума Ответить с цитированием
Старый 27.11.2012, 17:06   #22
svkpro
Пользователь
 
Регистрация: 22.11.2012
Сообщений: 52
По умолчанию

вот рабочий код:
Код:
#include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{setlocale (LC_ALL, "Rus");

  short Chislo1, Chislo2, Ostatok;
   cout<<"Введите диапазон чисел для нахождения простых: "<<endl;  
     cin>>Chislo1; cin>>Chislo2;
		
	for (;Chislo1<Chislo2;Chislo1++)
	    {
	       for (int i=2; 10>i&&i<Chislo1; i++) //число "і" до девятки проверяю сознательно, поскольку, по большому счету, откуда мне знать, что достаточна проверка деления без остатка на 2, 3, 5, 7?
                          {
		 Ostatok=Chislo1%i;

		 if (Ostatok!=0){ cout<<Chislo1<<"\t";break;//При выполнении программы присутствуют некоторые непростые числа, например, 15. Почему не срабатывает break (отмечаю его звездочкой "*"), когда i=3?
                            
			//break; //* вот этот break, по идее, должен срабатывать, когда i=3, i=5. При его срабатывании, как мне кажется, Chislo1 должно увеличиваться на единицу. Т.е. при работе программы число 15 выводиться как простое не должно, а оно выводится. Вопрос: почему?
		 }  
               else			    
			 		break;
			  
				
		   }
					
							
	}
		

return 0;

}
прошел пошагово с контрольми значениями в диапазоне 2-30 break срабатывает и значения переменные получают нужные.
svkpro вне форума Ответить с цитированием
Старый 27.11.2012, 17:22   #23
svkpro
Пользователь
 
Регистрация: 22.11.2012
Сообщений: 52
По умолчанию

извиняюсь 15 выскачило((((( надо подумать
svkpro вне форума Ответить с цитированием
Старый 27.11.2012, 17:32   #24
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Отладчик. Или просто немного воображения, и "руками" пройдите по коду. Если Chislo1 нечётное, код выведет его на первой же итерации внутреннего цикла. Чуть более обще, Вы не можете утверждать, что число простое, пока внутренний цикл не прокрутился до конца. Что значит, что после внутреннего цикла Вам надо как-то различать, вышли Вы из него по break или по условию выхода.
Abstraction вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача о нахождении простых чисел в матрице alexamazzing Помощь студентам 1 26.10.2012 02:11
Вывод на экран N простых чисел. Renge Помощь студентам 2 13.09.2011 18:53
задача по массивам // Delphi //код прилагается Makotya Помощь студентам 2 20.05.2009 22:04
Вывод простых чисел. MAKEDON Помощь студентам 1 10.03.2009 16:55
Где ошибка в моем коде? artemavd БД в Delphi 12 22.09.2008 14:28