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

Немогу разобраться, почему выводит каждое число по 20 раз? - C++

Восстановить пароль Регистрация
 
BukToOp
0 / 0 / 0
Регистрация: 05.03.2013
Сообщений: 11
05.03.2013, 13:34     Немогу разобраться, почему выводит каждое число по 20 раз? #1
Ну суть ясна в названии, программировал в Borland C++ for DOS
Код:
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
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
void main()
{
    clrscr();
    int m; 
    int n; 
    printf("Enter maximal simple number: ");
    scanf("%i",&m);
 
       //   printf("Simple numbers: \n");
    for(n=2; n<=m; n++)
    {
        int f[20];
        int i;
        for(int u=0; u<20; u++)
        {
            for(i=2; i<n; i++)
            {
            if(n%i==0) {break;}
            }
            if(i==n)
            {f[u]=n;
            printf("Simple number #%i: %i ",u, n);
            }
            double r=pow(2,f[u])-1;
                        printf("%lf, ", r);
            }
    }
 
    printf("\n");
    getch();
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2013, 13:34     Немогу разобраться, почему выводит каждое число по 20 раз?
Посмотрите здесь:

Каждое второе число в массиве, которые повторяются более 2 раз, удалить C++
Одномерный массив: сколько раз повторяется каждое число C++
C++ Почему выводит неправильное ,длинное число?
C++ Немогу разобраться
C++ Использование двухмерных массивов! (дополнить код: показать, сколько раз каждое число используется в массиве )
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
05.03.2013, 13:47     Немогу разобраться, почему выводит каждое число по 20 раз? #2
Цитата Сообщение от BukToOp Посмотреть сообщение
for(i=2; i<n; i++)
* * * * * * {
* * * * * * if(n%i==0) {break;}
* * * * * * }
- что за дурацкий цикл?
Изложи как стоит задание?
BukToOp
0 / 0 / 0
Регистрация: 05.03.2013
Сообщений: 11
05.03.2013, 13:53  [ТС]     Немогу разобраться, почему выводит каждое число по 20 раз? #3
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Изложи как стоит задание?
Тут я находил простые числа, для того чтобы вычислить около 20 чисел Мерсенна. Суть задания в том, чтобы программа выводила первые 20 чисел Мерсенна. Ну я писал 20, можно и сделать до 12. Главное чтобы она быстро это делала.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
05.03.2013, 14:09     Немогу разобраться, почему выводит каждое число по 20 раз? #4
Напишите задание это будет проще
Пока писал уже кто то спросил(тавтология)

Попробуйте это может поможет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <math.h>
#include <iostream>
using namespace std;
int main()
{
 
    const int m=20;
    int fp[m],a;
    a=2;
 
   for(int i=2;i<=m;i++)
   {
       cout<<pow(2,i)-1<<endl;
   }
 
 
 
return 0;
}
BukToOp
0 / 0 / 0
Регистрация: 05.03.2013
Сообщений: 11
05.03.2013, 14:18  [ТС]     Немогу разобраться, почему выводит каждое число по 20 раз? #5
Ругается, что то с библиотекой iostream наверно не так:
Error NONAME00.CPP 2: Unable to open include file 'IOSTREAM'
Error NONAME00.CPP 3: Declaration syntax error
Error NONAME00.CPP 13: Undefined symbol 'cout'
Error NONAME00.CPP 13: Undefined symbol 'endl'
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
05.03.2013, 14:31     Немогу разобраться, почему выводит каждое число по 20 раз? #6
Замените
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <math.h>
using namespace std;
int main()
{
 
    const int m=20;
    int a=0;
 
   for(int i=2;i<=m;i++)
   {
       a=pow(2,i)-1;
       printf("%i",a);
       printf("\n");
   }
 
return 0;
}
BukToOp
0 / 0 / 0
Регистрация: 05.03.2013
Сообщений: 11
05.03.2013, 14:32  [ТС]     Немогу разобраться, почему выводит каждое число по 20 раз? #7
Поискал, оказывается у меня старая версия и поэтому немного изменил программный код, но почему то теперь когда я программу запускаю, результат не выводится или очень быстро пролетает, т.е. окно открывается и закрывается.
Цитата Сообщение от egor2116 Посмотреть сообщение
Замените
Заменил, все равно синтаксическая ошибка в третей строчке
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
05.03.2013, 14:37     Немогу разобраться, почему выводит каждое число по 20 раз? #8
пардон удалите
C++
1
using namespace std;
-=ЮрА=-
Заблокирован
Автор FAQ
05.03.2013, 14:39     Немогу разобраться, почему выводит каждое число по 20 раз? #9
BukToOp, лови
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
int main()
{
    int N = 0;
    int n = 0;
    printf("Enter number count : ");
    scanf("%d", &N);
    double M    = 0;
    double pow2 = 1.0;
    for(n = 1; n < N; n = n + 1)
    {
        pow2 = pow2 * 2;
        M    = pow2 - 1;
        printf("%d\t: %.0f\n", n, M);
    }
    return 0;
}
Миниатюры
Немогу разобраться, почему выводит каждое число по 20 раз?  
BukToOp
0 / 0 / 0
Регистрация: 05.03.2013
Сообщений: 11
05.03.2013, 14:41  [ТС]     Немогу разобраться, почему выводит каждое число по 20 раз? #10
Что то не так. Насколько я знаю числа Мерсенна основываются на простых числах. Например, первое число Мерсенна равно 7, т.к. первое простое число равно 3. Т.е. 2 в степени 3 и минус 1 получается семь. Но дальше в программе идет не совсем так, т.к. следующее простое число равно 5, а у вас 4.
P.S. Удалил третью строчку, добавил библиотеку conio.h и в конце перед return 0; написал getch(); - заработала.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
05.03.2013, 14:48     Немогу разобраться, почему выводит каждое число по 20 раз? #11
Выдеhжка из Wiki
Числа Мерсе́нна — числа вида M_n = 2^n - 1 , где n — натуральное число. Названы в честь французского математика Марена Мерсенна.
Последовательность чисел Мерсенна начинается так:
1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, … (последовательность A000225 в OEIS)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <math.h>
int main()
{
 
    const int m=20;
    int a=0;
 
   for(int i=1;i<=m;i++)
   {
       a=pow(2,i)-1;
       printf("%i",a);
       printf("\n");
   }
 
return 0;
}
Вывод
1
3
7
15
31
63
127
255
511
1023
2047
4095
8191
16383
32767
65535
131071
262143
524287
1048575

Добавлено через 2 минуты
Правда есть и другая последовательность Марсенна
Выдержка из Wiki
Иногда числами Мерсенна называют числа M_n с простыми индексами p. Эта последовательность начинается так:
3, 7, 31, 127, 2047, 8191, 131071, 524287, 8388607, 536870911, 2147483647, … (последовательность A001348 в OEIS)
-=ЮрА=-
Заблокирован
Автор FAQ
05.03.2013, 14:49     Немогу разобраться, почему выводит каждое число по 20 раз? #12
Цитата Сообщение от BukToOp Посмотреть сообщение
Что то не так. Насколько я знаю числа Мерсенна основываются на простых числах. Например, первое число Мерсенна равно 7, т.к. первое простое число равно 3. Т.е. 2 в степени 3 и минус 1 получается семь. Но дальше в программе идет не совсем так, т.к. следующее простое число равно 5, а у вас 4.
http://ru.wikipedia.org/wiki/Числа_Мерсенна
1, 3, 7, 15, 31, 63, 127, 255, 511, 1023
В моём коде ничего убирать не надо было
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.03.2013, 15:01     Немогу разобраться, почему выводит каждое число по 20 раз?
Еще ссылки по теме:

немогу разобраться с переменной C++ C++
C++ Подскажите еще раз пожалуйста, почему во 2 столбце не выводит слова?
Нужно, чтобы каждое записанное число записывалось в файл, каждое с новой строки C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
BukToOp
0 / 0 / 0
Регистрация: 05.03.2013
Сообщений: 11
05.03.2013, 15:01  [ТС]     Немогу разобраться, почему выводит каждое число по 20 раз? #13
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
В моём коде ничего убирать не надо было
Я говорил не про ваш код.
В моем случае нужно возводить двойку в степень простых чисел, поэтому я и пытался найти простые числа, а потом уже возвести в степень. Т.е. я и говорю про вторую последовательность Мерсенна.
Yandex
Объявления
05.03.2013, 15:01     Немогу разобраться, почему выводит каждое число по 20 раз?
Ответ Создать тему
Опции темы

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