Форум программистов, компьютерный форум CyberForum.ru

Простые числа - C++

Восстановить пароль Регистрация
 
Ксения Стэп
1 / 1 / 0
Регистрация: 11.12.2010
Сообщений: 24
11.12.2010, 11:56     Простые числа #1
ПОМОГИТЕ ПОЖАЛУЙСТА РЕШИТЬ ЗАДАЧУ - "Вводится последовательность из N целых чисел. Сформировать новую
последовательность, каждый элемент которой равен 1, если
соответствующее число простое, 2 – если число совершенное, 0 – в
остальных случаях. Вычислить количество 0, 1 и 2 в выходной
последовательности (функциями оформить проверку является ли число
простым, совершенным)."
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2010, 11:56     Простые числа
Посмотрите здесь:

Даны натуральные числа p и q. Получить все делители числа q, взаимно простые к p. C++
C++ Даны целые числа р и q. Получить все делители числа q, взаимно простые с р
Даны целые числа р и q. Получить все делители числа q, взаимно простые с р. C++
C++ Даны натуральные числа a,b(a<= Ь). Получить все простые числа р, удовлетворяющие неравенствам a<= р<= b.
C++ Найти все трехзначные простые числа. Определить функцию позволяющую распознавать простые числа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
11.12.2010, 12:32     Простые числа #2
Ввод, пожалуйста, самостоятельно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
// стандартная проверка на простое число
bool is_simple(int n)
{
        if (abs(n) == 2)
                return true;
        if ((abs(n) < 2) || (n%2 == 0))
                return false;
        for (int i=3; (i*i)<n; i+=2)
                if ((n % i) == 0)
                        return false;
        return true;
}
 
// быстрая проверка на совершенное число
bool is_perfect(int n)
{
        // последний элемент должен быть нулем
        const int perfects[] = { 6, 28, 496, 8128, 33550336, 0 };
        // для 64 бит
        // const int perfects[] = { 6, 28, 496, 8128, 33550336, 8589869056, 1374386913280, 0 };
 
        int i = 0;
        int t;
        while (perfects[i]!=0)
        {
                t = perfects[i];
                if (t == n)
                        return true;
                else
                        if (t > n)
                                return false;
                i++;
        }
        return false;
}
 
int main()
{
        int N = 10;
 
        int *M = new int[N];
        for (int i=0; i<N; i++)
                M[i] = i;
 
        int *R = new int[N];
        for (int i=0; i<N; i++)
                if (is_simple(M[i]))
                        R[i] = 1;
                else if (is_perfect(M[i]))
                        R[i] = 2;
                else
                        R[i] = 0;
 
        int K[3] = { 0, 0, 0};
        for (int i=0; i<N; i++)
                K[R[i]]++;
 
        for (int i=0; i<N; i++)
                cout << M[i] << " ";
        cout << endl;
 
        for (int i=0; i<N; i++)
                cout << R[i] << " ";
        cout << endl;
 
        for (int i=0; i<3; i++)
                cout << i << ": " << K[i] << " ";
        cout << endl;
 
        delete [] M;
        delete [] R;
        return 0;
}
Ксения Стэп
1 / 1 / 0
Регистрация: 11.12.2010
Сообщений: 24
11.12.2010, 12:38  [ТС]     Простые числа #3
ИЗВИНИТЕ А ЧТО ЗНАЧИТ ВВОД САМОСТОЯТЕЛЬНО?)))
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
11.12.2010, 13:09     Простые числа #4
Это значит, что из "ЗАДАЧИ" я не стал делать ту часть, в которой
Цитата Сообщение от Ксения Стэп Посмотреть сообщение
"Вводится последовательность из N целых чисел. ..."
Я заменил эту часть вводом массива числами от 0 до N-1, потому что мне лень вбивать их каждый запуск программы. Вам придется сделать эту часть (ввод данных) лично (самостоятельно). Ну или попытаться просунуть преподавателю в таком виде. Авось и примет.
Ксения Стэп
1 / 1 / 0
Регистрация: 11.12.2010
Сообщений: 24
11.12.2010, 13:11  [ТС]     Простые числа #5
ну хорошо, и за это спасибо огромное!!!!!!!!!!!!!!!!!!!!!!очень помогли!!!!!!!
Yandex
Объявления
11.12.2010, 13:11     Простые числа
Ответ Создать тему
Опции темы

Текущее время: 22:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru