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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2013, 01:00   #1
makskovalko
Пользователь
 
Аватар для makskovalko
 
Регистрация: 23.04.2012
Сообщений: 82
По умолчанию Простые шестизначные числа

Здравствуйте! Напишите, пожалуйста, программу, которая бы выводила все простые шестизначные числа с суммой цифр, равной К.
makskovalko вне форума Ответить с цитированием
Старый 27.02.2013, 15:17   #2
KooKish
Улыбаемся :)
Пользователь
 
Регистрация: 18.12.2012
Сообщений: 74
По умолчанию

Самый простой, НО не очень корректный вариант.
Код:
#include <iostream>
#include <conio.h>

using namespace std;

int main(){
	setlocale(LC_ALL, "rus");
	int n, a, b, c, d, e, f;
	cout << "Введите число от 6 до 54: ";
	cin >> n;
	for(a=1;a<10;a++)
		for(b=1;b<10;b++)
			for(c=1;c<10;c++)
				for(d=1;d<10;d++)
					for(e=1;e<10;e++)
						for(f=1;f<10;f++)
							if( a + b + c + d + e + f == n )
					                cout << a << b << c << d << e << f << "  ";
	getch();
}
Не забываем про весы.
KooKish вне форума Ответить с цитированием
Старый 27.02.2013, 20:11   #3
was3110
Форумчанин
 
Аватар для was3110
 
Регистрация: 25.04.2010
Сообщений: 254
По умолчанию

О простых числах представление своеобразное...
помогать студентам - моя вторая профессия
was3110 вне форума Ответить с цитированием
Старый 27.02.2013, 21:33   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от was3110 Посмотреть сообщение
О простых числах представление своеобразное...
О шестизначных - тоже.
100000, 110000, 200000 - разве не шестизначные?
s-andriano вне форума Ответить с цитированием
Старый 27.02.2013, 21:40   #5
KooKish
Улыбаемся :)
Пользователь
 
Регистрация: 18.12.2012
Сообщений: 74
По умолчанию

Я нули не учитывал, т.к. отсчитывал от всех 1 до всех 9, принципе исправляется довольно просто.
хм, хотя верно, в моем случае, нулей вообще не будет. Благодарю за внимательность.

Код:
#include <iostream>
#include <conio.h>

using namespace std;

int main(){
	setlocale(LC_ALL, "rus");
	int n, a, b, c, d, e, f;
	cout << "Введите число от 0 до 54: ";
	cin >> n;
	for(a=0;a<10;a++)
		for(b=0;b<10;b++)
			for(c=0;c<10;c++)
				for(d=0;d<10;d++)
					for(e=0;e<10;e++)
						for(f=0;f<10;f++)
							if( a + b + c + d + e + f == n )
					                cout << a << b << c << d << e << f << "  ";
	getch();
}
Не забываем про весы.

Последний раз редактировалось KooKish; 27.02.2013 в 21:43.
KooKish вне форума Ответить с цитированием
Старый 27.02.2013, 22:41   #6
programmerhpkk
 
Аватар для programmerhpkk
 
Регистрация: 13.02.2013
Сообщений: 5
По умолчанию

Собственно вот. Вроде все правильно выдает, только вычисляет долго:

Код:
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{int s=0;
int n,z;
cout<<"Vvedite naturalnoe chislo menshe 55\n";
cin>>n;
	for(int i=100000 ; i<1000000;i++)
	{	
		s=0;
		for(int j=2;j<i;j++)		
			if(!(i%j)) s++;
	
			if (!s) 
			{	
				z=i;
				while(z)
					{
						s=s+(z%10);
						z=z/10;
					}
				if (s==n) cout<<i<<" ";
			}
	}
getch();
}
programmerhpkk вне форума Ответить с цитированием
Старый 27.02.2013, 22:55   #7
programmerhpkk
 
Аватар для programmerhpkk
 
Регистрация: 13.02.2013
Сообщений: 5
По умолчанию

Цитата:
Сообщение от KooKish Посмотреть сообщение
Я нули не учитывал, т.к. отсчитывал от всех 1 до всех 9, принципе исправляется довольно просто.
хм, хотя верно, в моем случае, нулей вообще не будет. Благодарю за внимательность.
Чёт совсем не то выводит...

Последний раз редактировалось programmerhpkk; 28.02.2013 в 02:57.
programmerhpkk вне форума Ответить с цитированием
Старый 28.02.2013, 01:15   #8
makskovalko
Пользователь
 
Аватар для makskovalko
 
Регистрация: 23.04.2012
Сообщений: 82
По умолчанию

Программа должна выводить все ПРОСТЫЕ шестизначные числа.
makskovalko вне форума Ответить с цитированием
Старый 28.02.2013, 02:56   #9
programmerhpkk
 
Аватар для programmerhpkk
 
Регистрация: 13.02.2013
Сообщений: 5
По умолчанию

Цитата:
Сообщение от makskovalko Посмотреть сообщение
Программа должна выводить все ПРОСТЫЕ шестизначные числа.
Ну моя и выводит все ПРОСТЫЕ шестизначные числа с суммой цифр, равной К.
Вот в процесе вывода, просто ждать пока весь цикл пройдет лень было.
Изображения
Тип файла: jpg Безимени-1.jpg (81.8 Кб, 114 просмотров)
programmerhpkk вне форума Ответить с цитированием
Старый 28.02.2013, 08:01   #10
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от programmerhpkk Посмотреть сообщение
Ну моя и выводит все ПРОСТЫЕ шестизначные числа с суммой цифр, равной К.
Вот в процесе вывода, просто ждать пока весь цикл пройдет лень было.
Ну да.
"Лесенка" в коде немножко странно выполнена поэтому трудно с первого взгляда понять, что именно делается.

Цитата:
только вычисляет долго:
Ну так написано на редкость неоптимально.
Если пытаться подправить существующий код, то следует:
1. Проверку на простоту достаточно проводить по максимуму до sqrt(i), а не до i.
2. Цикл проверки на простоту можно прерывать, когда найден первый делитель, не обязательно искать все.
3. Целесообразно сначала подсчитывать сумму цифр (как менее ресурсоемкую операцию) и только потом - по условию - проверку на простоту (как более ресурсоемкую).
4. Перебор достаточно осуществлять только по нечетным числам, проверку на делимость начиная с 3.

Ну а по-хорошему, нужно менять алгоритм, тогда 99% времени будет тратиться только на вывод на экран:
1. Составить таблицу простых чисел в диапазоне 1000000-999999 (решето Эратосфена).
2. Просмотреть таблицу, для простых подсчитать сумму цифр, при нужной сумме - вывод на печать.
Минус такого алгоритма - необходимо несколько десятков Кбайт памяти (в простейшем случае 55К).

Последний раз редактировалось s-andriano; 28.02.2013 в 08:06.
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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