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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2013, 18:12   #1
dragodar
Пользователь
 
Регистрация: 30.09.2012
Сообщений: 51
По умолчанию поиск простых чисел в с++

всё народ я замаялся искать может кто поможет даю задачу:
Задан массив целых чисел. Определить максимальное простое число среди элементов массива. Количество элементов массива и их значения запросить у пользователя.
Например: для массива 1,7,10,2,1,11,4,5,10,15,3 – результат 11

я немогу даже просто простое число найти даю то что у меня есть
Код:
#include<iostream>
#include<conio.h>
using namespace std;

void massiv(int n,int mas[])
{
	int i;
	for(i=0;i<n;i++)
		{
			cout<<"["<<i+1<<"]"<<":	";
			cin>>mas[i];
		}
	cout<<"\n array:	";
	for(i=0;i<n;i++)
		{
			cout<<mas[i]<<"  ";
		}
}

void simples(int mas[],int n)
{
	int i,x=2;
	for(i=0;i<n;i++)
	{
		for(x;x<mas[i];x++)
		{
			if(mas[i]%x==0) cout<<" false-   "<<mas[i];
			else cout<<" true-   "<<mas[i];
		}
	}
}


int main() {
	int n, *mas,result = 0;
	cout<<"input numbers of array elements:	";
	cin>>n;
	int num=n;
	if (num>0)
	{
		mas=new int[n];
		massiv(n,mas);
		simples(mas,n);
		cout<<"\n";
	}
	else
	{
		cout<<"\nillegal size input\n";
	}
	return 0;
}
тут описана попытка тупо вывести является ли число простым или нет!
помогите пожалуйста
dragodar вне форума Ответить с цитированием
Старый 20.10.2013, 20:25   #2
dragodar
Пользователь
 
Регистрация: 30.09.2012
Сообщений: 51
По умолчанию

что никто незнает?
dragodar вне форума Ответить с цитированием
Старый 21.10.2013, 08:08   #3
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

Код:
void simples(int mas[],int n)
{
	int i,x,j;
	int simple[n];
	bool is_simple;
        j=0;
	for(i=0;i<n;i++)
		{
		is_simple = true;
		for(x=2; x<mas[i]; x++)
			if(mas[i] % x == 0)
			{
				is_simple = false;
				break;
			}
		if(is_simple == true) {simple[j]=mas[i];j++;}
		}
	
}
ну и туда же поиск максимального
Код:
	int max= simple[0];	
	for(i=1;i<j;i++)
	if(max<simple[i]) max=simple[i];
	cout<<endl<<max;
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!

Последний раз редактировалось SaLoKiN; 21.10.2013 в 08:11.
SaLoKiN вне форума Ответить с цитированием
Старый 21.10.2013, 09:13   #4
dragodar
Пользователь
 
Регистрация: 30.09.2012
Сообщений: 51
По умолчанию

спасибо! ваше решение исправило проблему поиска макс числа но может кому пригодится вывод всех простых чисел то даю код
Код:
int i,j,h,max;
	j=1;
	cout<<"simple numbers:  \n";
	for(i=0;i<n;i++)
	{
		j=i+1;
		if(mas[i]<10){if(mas[i]==2||mas[i]==3||mas[i]==5||mas[i]==7)cout<<"number  "<<mas[i]<<" pos- "<<j<<"; \n" ;}
		else
		if(mas[i]%5!=0&&mas[i]%2!=0&&mas[i]%3!=0&&mas[i]%7!=0&&mas[i]!=1) cout<<"number  "<<mas[i]<<" pos- "<<j<<";\n " ;	
	}
dragodar вне форума Ответить с цитированием
Старый 21.10.2013, 09:27   #5
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

не верно... число 121 не есть простое, а ваша проверка скажет что оно простое. ваша проверка будет работать в пределах 100

Код:
void simples(int mas[],int n)
{
	int i,j;
	bool is_simple;
	for(i=0;i<n;i++)
		{
		is_simple = true;
		if(mas[i]!=1)
			{
		         for(j=2; j < mas[i]; j++)
				if(mas[i] % j == 0)
				{
					is_simple = false;
					break;
				}	
		if(is_simple == true) cout<<"number  "<<mas[i]<<" pos- "<<i+1<<";"<<endl ;
			
			}
		}
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!

Последний раз редактировалось SaLoKiN; 21.10.2013 в 09:34.
SaLoKiN вне форума Ответить с цитированием
Старый 22.10.2013, 18:20   #6
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Вот вариант вывода простых чисел. Алгоритм взял отсюда: http://acmp.ru/article.asp?id_text=143



Код:
#include <cmath>
#include <iostream>
using namespace std;

const int LIMIT = 500;

int main(int argc, char** argv) {
    int j, lim;
    for (int i = 1; i <= LIMIT; ++i) {
        j = 2;
        lim = trunc(sqrt(i));
        while ((i%j != 0) && (j <= lim)) {
            ++j;
        }
        if (j > lim) {
            cout << i << endl;
        }
    }
    return 0;
}
8Observer8 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск простых чисел(найти ошибку) Splintt Общие вопросы C/C++ 1 14.12.2012 12:33
Поиск простых чисел потоками 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