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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2014, 15:54   #1
Janitor93
Пользователь
 
Регистрация: 23.01.2014
Сообщений: 13
По умолчанию Поиск простых натуральных чисел

Новичок в треде. Надо найти простые числа. Компилятор выдает ошибку, мол целое деление на ноль и указывает на эту строчку "if (mas[i] % j == 0)". Это же условие. Да и вообще нету тут нигде никакого деления на 0. В чем проблема?
Причем иногда выдает правильно, например, если вводим 3 числа: 2 6 8, оно выведет 2. Все верно. Ну в общем то и все. В остальных случая всегда будут ошибки, если выведет.

забыл добавить: С++

Код:
#include <iostream>
using namespace std;
int main()
{
	int *mas;
	int n, i;
	cout << "Vvedite razmer mas: ";
	cin >> n;
	mas = new int[n];
	for (i = 0; i < n; i++)
	{
		cout << "Vvedite " << i+1 << "-oe chislo: ";
		cin >> mas[i];
		if (mas[i] <= 0)
		{
			cout << "Poprobuite psze"<<endl;
			system("pause");
			return 0;
		}
	}
	cout << "Vash mas: ";
	for (i = 0; i < n; i++)
		cout << mas[i]<<" ";
	
	int j=1,num=0;
	for (i = 0; i < n; i++)
	{
		j = 1;
		num = 0;
		while (j != mas[i])
		{
			mas[i] % j;
			if (mas[i] % j == 0)
				num++;
			j++;
		}
		cout << endl;
		if (num <= 2)
			cout << "Prost: " << mas[i];
	}

	delete [] mas;
	system("pause");
	return 0;
}

Последний раз редактировалось Janitor93; 21.09.2014 в 16:07.
Janitor93 вне форума Ответить с цитированием
Старый 21.09.2014, 16:03   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Как звучит оригинал задания?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 21.09.2014, 16:07   #3
Janitor93
Пользователь
 
Регистрация: 23.01.2014
Сообщений: 13
По умолчанию

Оригинал просит найти количество чисел. Но я хочу свой вариант, что бы из последовательности чисел выводило простые натуральные числа.
Janitor93 вне форума Ответить с цитированием
Старый 21.09.2014, 16:22   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Чо делает вот этот кусок кода?
Код:
                j = 1;
		num = 0;
		while (j != mas[i])
		{
			mas[i] % j;
			if (mas[i] % j == 0)
				num++;
			j++;
		}
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 21.09.2014, 16:23   #5
Janitor93
Пользователь
 
Регистрация: 23.01.2014
Сообщений: 13
По умолчанию

считает количество нулевых остатков от деления
Janitor93 вне форума Ответить с цитированием
Старый 21.09.2014, 16:36   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
считает количество нулевых остатков от деления
Зачем?
Надо ж просто делить только нечётные mas[i] на числа от 3 до (mas[i] - 1) / 2 и прерывать цикл, когда нашёлся первый же делитель из этого диапазона!

Оптимизатор, мля!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 21.09.2014, 16:49   #7
Janitor93
Пользователь
 
Регистрация: 23.01.2014
Сообщений: 13
По умолчанию

Ну можно и так, спасибо.
я просто думал через количество делителей выводить. По логике этот код тоже должен работать.
Janitor93 вне форума Ответить с цитированием
Старый 21.09.2014, 17:47   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Ну можно и так, спасибо.
Не "можно", а "нужно".
Цитата:
По логике этот код тоже должен работать.
Это называется "На зло бабушке отморожу уши".

Переделай, пропадёт деление на 0.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск простых чисел в с++ dragodar Помощь студентам 5 22.10.2013 18:20
Поиск простых чисел потоками bors4 Visual C++ 6 04.12.2012 19:36
Поиск простых чисел phreaker228 Помощь студентам 3 03.06.2012 15:24
Поиск простых чисел + поток (C++) Brabus Помощь студентам 4 30.09.2011 08:46
Поиск простых чисел из диапазона dex92 Помощь студентам 2 21.05.2010 09:40