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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2013, 08:42   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

полностью согласен с s-andriano!

(programmerhpkk, посмотрите на форуме, уже были данные примеры эффективной проверки числа на простоту)

добавлю, что если заданное число K кратно 3-м, то можно сразу выводить ответ, что простых чисел с такой суммой цифр НЕТ (см. признаки делимости).


update
А почему все решили, что автору топика нужно решение на С ? Я, например, могу на Паскале решение выложить
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.02.2013, 08:55   #12
KooKish
Улыбаемся :)
Пользователь
 
Регистрация: 18.12.2012
Сообщений: 74
По умолчанию

О боже.... я задание не так понял. В голове не простые числа держал а целые...
Сейчас похимичим...
Цитата:
А почему все решили, что автору топика нужно решение на С ?
Форум экстрасенсов же...
Не забываем про весы.

Последний раз редактировалось KooKish; 28.02.2013 в 09:04.
KooKish вне форума Ответить с цитированием
Старый 28.02.2013, 10:23   #13
KooKish
Улыбаемся :)
Пользователь
 
Регистрация: 18.12.2012
Сообщений: 74
По умолчанию

Ну быстрей чем у programmerhpkk, но тоже подождать приходится В принципе если еще посидеть и постараться, то можно время сократить. Но это уже забота автора
Код:
#include <iostream>
#include <conio.h>

using namespace std;

int main(){
	setlocale(LC_ALL, "rus");
	int n, a, b, y, count;
	double x, z;
	cout << "Введите число от 1 до 54: ";
	cin >> n;
	for(int i=100000;i<1000000;i++){
		b = 0;
		a = i;
		for(int tmp=0;tmp<6;tmp++){
			b += a%10;
			a = a/10;
		}
		if( b == n ){
			x = i;
			count = 0;
			for(int j=2;j<x;j++){
				z = x / j;
				y = x / j;
				if( z / y == 1 )
					break;
				if( j == x - 1 )
					cout << x << "  ";
			}
		}
	}
	getch();
}
Не забываем про весы.

Последний раз редактировалось KooKish; 28.02.2013 в 10:29.
KooKish вне форума Ответить с цитированием
Старый 28.02.2013, 11:32   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
			for(int j=2;j<x;j++){
				z = x / j;
				y = x / j;
				if( z / y == 1 )
					break;
				if( j == x - 1 )
					cout << x << "  ";
Это что за кошмарный ужас?! я потрясён...



если не использовать решето Эратосфена для поиска простых чисел,
тогда я бы обратил Ваше внимание на функцию PrimeNumber из этого поста
или функцию isPrime из этого
да. и вместо корня квадратного из числа n можно использовать цикл вида: for (int i=2;i*i<=n;i++)

Последний раз редактировалось Serge_Bliznykov; 28.02.2013 в 11:57.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.02.2013, 11:44   #15
KooKish
Улыбаемся :)
Пользователь
 
Регистрация: 18.12.2012
Сообщений: 74
По умолчанию

Цитата:
Это что за кошмарный ужас?! я потрясён...
Это фирменная проверка на ПРОСТОЕ число )))))) сам придумал :D да я от балды делал. говорю же надо немного переделать Кстати тормозит из за этой части.
Не забываем про весы.
KooKish вне форума Ответить с цитированием
Старый 28.02.2013, 11:59   #16
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Это фирменная проверка на ПРОСТОЕ чис
извините меня за прямоту, но это не проверка, это "фирменный" БРЕД!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.02.2013, 12:09   #17
KooKish
Улыбаемся :)
Пользователь
 
Регистрация: 18.12.2012
Сообщений: 74
По умолчанию

Работает же :D Мне всегда говорили что я делаю не как все а через ж. Но в итоге все работает. Помню как делфи сдавал, так мне препод говорит: "Она у тебя даже запускаться не должна, а в итоге работает". Это конечно не есть хорошо. Но все же.
Не забываем про весы.

Последний раз редактировалось KooKish; 28.02.2013 в 12:11.
KooKish вне форума Ответить с цитированием
Старый 28.02.2013, 12:52   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Работает же :D

угу. кое-как, но работает.
Но!
во-первых, не поленитесь, посмотрите решения по ссылкам, которые я привёл.

во-вторых, откройте для себя операцию целочисленного деления %
ваше z = x / j; y = x / j; if( z / y == 1 ) break;
заменяет строчка кода if (x%j == 0) break

в-третьих, не нужно перебирать все числа до x достаточно беребирать до корня квадратного из x - поверьте мне, цикл от 2 до 1000 выполнится НАМНОГО быстрее, чем цикл от 2 до 1000000!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.02.2013, 12:59   #19
alexander13
Форумчанин
 
Аватар для alexander13
 
Регистрация: 07.02.2013
Сообщений: 267
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение

цикл от 2 до 1000 выполнится НАМНОГО быстрее, чем цикл от 2 до 1000000!
Не читал всю тему, но если там используется метод перебора, то лучше сначала проверять на четность, тогда кол-во чисел для перебора еще сократится вдвое =)
Ну, цикл там будет тогда что-то типа for (i = 3; i*i <= n; i+=2)
Μολὼν λαβέ

Последний раз редактировалось alexander13; 28.02.2013 в 13:01.
alexander13 вне форума Ответить с цитированием
Старый 28.02.2013, 13:37   #20
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от alexander13
Не читал всю тему, но если там используется метод перебора, то лучше сначала проверять на четность, тогда кол-во чисел для перебора еще сократится вдвое =)
alexander13, полностью согласен! (пруф в любом моём сообщении, где я привожу свой любимый код проверки числа на простоту на Паскале... )
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны целые числа р и q. Получить все делители числа q, взаимно простые c г. Владан Паскаль, Turbo Pascal, PascalABC.NET 2 03.12.2012 23:39
Задачи в ТурбоПаскаль: найти числа Армстронга и просуммировать числа в последовательности номера которых простые числа Lena1808 Помощь студентам 1 17.05.2012 08:00
Простые числа... cbuilderx Помощь студентам 3 08.03.2012 22:25
Простые числа kuy Паскаль, Turbo Pascal, PascalABC.NET 4 28.10.2011 14:44
Простые числа. С++ mephistophel Помощь студентам 3 03.02.2011 22:12