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

Найти 100 первых простых чисел - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Чтение директории http://www.cyberforum.ru/cpp-beginners/thread47421.html
Киньте пример на "чистом" C++ чтения директории. Т.е. надо прочесть директорию, записать все имена файлов и поддиректорий в массив записей. Запись состоит из двух полей - строка с именем и поле с флагами. Ключевая проблема - как отличать файлы от директорий. Ну и до кучи - отличить файл от устройства, прочитать атрибуты/права, владельца и т.п. Спасибо.
C++ operator[] есть класс CItem, в качестве члена указан список CList<CVariant> data; как будет выглядеть operator класса CItem, чтобы данный код сработал? CItem item; item = CVariant("some data =)"); ASSERT(item.data == CVariant("some data")); http://www.cyberforum.ru/cpp-beginners/thread47416.html
Связные списки C++
Я практически полный нуб в С++. Вот такая задача: В столовой предлагаются N комплексных обедов, состоящих из Q блюд. Известна стоимость и калорийность каждого блюда. Сколько стоит самый деше¬вый и самый дорогой обед? Сколько калорий включает в себя самое калорийное блюдо? Есть вот такая реализация с помощью структур и векторов: #include <iostream> #include <iomanip> #include <string> #include...
C++ А есть ли здесь разработчики под SymbianOS (С++)?
Просто накопилось много вопросов, стоит ли их здесь задавать? на других форумах(рус.) посвященных Symbian не такого живого обсуждение. :)
C++ Сравнение числовых массивов http://www.cyberforum.ru/cpp-beginners/thread47319.html
Есть два числовых массива в одном 4 элемента в другом 5 (то есть разное количество) Как с помощью C++ можно сравнить эти массивы Нужно сравнить каждый элемент с каждым как я понимаю это надо делать с помощью цикла for или while но не могу придумать как именно за один проход цикла сравнить один элемент со всеми и так до конца
C++ Работа с объектами внутри класса. Вот два класса подскажите что здесь не так. Функция sh класса Engine должна вызвать функцию showhello класса Obj #pragma once class Engine { public: Engine(void); public: подробнее

Показать сообщение отдельно
odip
Эксперт C++
 Аватар для odip
7225 / 3287 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
17.08.2009, 20:03     Найти 100 первых простых чисел
2insolent: Задача N1 похоже решена верно, но вот цикл в строке 8:
C++
1
for(i = 2; i <= a;i++)
не нужен совершенно.
Достаточно i= a;

Есть другой алгоритм - через массив.
Записываем ранее найденные простые числа в массив и используем этот массив для проверки.

Добавлено через 35 минут 47 секунд
N1 через массив (Поиск простых чисел)

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
#include <iostream>
#include <math.h>
 
using namespace std;
 
const int MAX_S_SIZE= 100;
 
void calc_simple( int size, int *data );
 
 
/**************************************/
int main( void ) {
 
int i;
int sa[MAX_S_SIZE];
 
calc_simple( MAX_S_SIZE, sa );
for ( i= 0; i<MAX_S_SIZE; i++ ) {
    cout <<" " <<sa[i];
}
cout <<endl;
 
return 0;
 
} // main()
 
 
/**************************************/
void calc_simple( int size, int *data ) {
 
int sn, tind, outind, max_div;
bool s_flag;
 
if ( size<1 ) { return; }
 
data[0]= 2;
outind= 1;
sn= 1;
for ( ; outind<size; outind++ ) {
    for ( ; ; ) {
        sn+= 2;
        s_flag= 1;
        max_div= (int)sqrt( sn );
        for ( tind= 1; tind<outind; tind++ ) {
            if ( data[tind] > max_div ) { break; }
            if ( sn % data[tind] == 0 ) {
                s_flag= 0; break;
            }
        }
        if ( s_flag ) { break; }
    }
    data[outind]= sn;
}
    
} // calc_simple()


Добавлено через 10 минут 14 секунд
2isolent: Задача N3.
Это конечно круто, но почему нельзя использовать доп. переменную ?
N3 - другой вариант

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
#include <iostream>
 
using namespace std;
 
void reverse( int size, int *data );
 
 
/**************************************/
int main( void ) {
 
int i;
const int N= 10;
int arr[N]= { 2, 5, 8, 8, 10, 1, 20, 80, 10, 15 };
 
 
cout <<"before:";
for ( i= 0; i<N; i++ ) {
    cout <<" " <<arr[i];
}
cout <<endl;
 
reverse( N, arr );
 
cout <<"after:";
for ( i= 0; i<N; i++ ) {
    cout <<" " <<arr[i];
}
cout <<endl;
 
return 0;
 
} // main()
 
 
/**************************************/
void reverse( int size, int *data ) {
 
int i, j;
int t;
 
for ( i= 0, j= size-1; i<j; i++, j-- ) {
    t= data[i]; data[i]= data[j]; data[j]= t;
}
    
} // reverse()
 
Текущее время: 01:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru