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

Простые сомножители - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перевести wchar в char http://www.cyberforum.ru/cpp-beginners/thread27575.html
Здравствуйте! Подскажите как перевести wchar в char? (MS Visual C++)
C++ Задача на динам. массивы, очереди, спискиБ командная строка Надо: Создать динамический массив и очередь (в виде линейного списка рядков, которые вводятся с клавиатуры). Количество рядков и предельная их длина задаются в командной строке. Отсортировать рядки по убыванию их длины.. Снять с очереди первых 10 элементов и переставить их в конец... Никогда не работал с командной строкой и списками, не знаю даже как сделать =( ЗЫ: Только не надо говорить... http://www.cyberforum.ru/cpp-beginners/thread27565.html
C++ Создать класс – вектор
Помогите решить задачу... Создайте класс – вектор (в пространстве Rn ). Класс должен содержать поинтер к типу long double и количество координат точки. Определите функции: инициализации (посредством динамического распределения памяти) и уничтожения (освобождение памяти) вектора, установки и модификации координат, доступа к координатам, вычисления длины вектора, вывода координат. Вычислите...
Создание структуры. C++
Помогите разобраться с задачей.. Создайте структуру – vector. Структура должна содержать поинтер к типу long double и число координат точки. Определите функции: инициализации (посредством динамического распределения памяти) и уничтожения (освобождение памяти) вектора, установки и модификации количества координат, доступа к координатам, вычисления длины вектора. В функции main(), для двух...
C++ Функция рассчета определенного интеграла. (Передача функции как аргумента) http://www.cyberforum.ru/cpp-beginners/thread27526.html
Есть функция пределенная как: float integrall(float (*argFunc)(float x) , float argTmin, float argTmax, float argStep=1) Если ей в качестве аргумента передать функцию, которая является членом какого-либо класса, integrall(pSubs->pArCpList->getCp, 100,1000); то компилятор выдает ошибку: ошибка: аргумент типа ‘float (ThermalCap:: )(float)’ не соответствует типу ‘float (*)(float)’ Однако...
C++ Вот такая вот задачка с массивом..) "Из положительных элементов матрицы N сформировать матрицу M(10, KMAX), располагая их в строках матрицы подряд, где KMAX - максимальное число положительных элементов строки матрицы N. Записать нули на место отсутсвтующих элементов. N(10, 10)" был бы оочень признателен!)) своим кодом я умудрился повесить компилятор xDD # include<iostream.h> # include<stdlib.h> # include<iomanip.h> #... подробнее

Показать сообщение отдельно
toshiba
0 / 0 / 0
Регистрация: 26.03.2009
Сообщений: 5
26.03.2009, 21:15  [ТС]     Простые сомножители
спс большое буду пробовать если сможешь потом напиши код) когда сделаю если получится сам скину !!! еще раз спасибо

Добавлено через 1 час 17 минут 3 секунды
Есть код
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
79
80
81
82
83
84
85
86
87
88
89
90
using System;
using System.Collections.Generic;
using System.Text;
 
namespace KultiHELL
{
    class Ferma
    {
        private Int32[] factors;    // Массив в который будут писацца множители
        private Int16 next = 1;     // Следующий индекс массива
 
        public Int32[] Factoring(Int32 n)
        {
            Int16 i_max = (Int16)Math.Floor(Math.Log(n, 2)); // Максимальное колво множителей
            factors = new Int32[i_max+1];
            factors[0] = n;
            int i = 0;
            Boolean exit = false;
 
            while(!exit)
            {
                if ((factors[next] = FermaMetod(ref factors[i])) != 0) // Если разложилось, то
                    next++;             // пробуем разложить число на том же индексе
                else                    // Если число простое, то можно брать следующее
                    if (++i == i_max)   // Если весь массив "заполнен", то выходим
                        exit = true;
            }
            int newSize = 0;
            for(;newSize == 0;i--)                      // Уменьшаем индекс, как только найдем ненулевой
                if (factors[i] != 0) newSize = i + 1;   // элемент пербор будет закончен
 
            Array.Resize<Int32>(ref factors, newSize);  // Обрезаем нули
            Array.Sort(factors);                        // Сортируем в порядке возрастания
            return factors;
        }
        private Int32 FermaMetod(ref Int32 n)
        {   // Метод Ферма. Смотри описание в "Description.pdf"
 
            if (n <= 2 )
                return 0;
            if (n == 2 * (n / 2)) // Проверка на четность
            {
                n = n / 2;
                return 2;
            }
            Int32 x = 1 + 2 * Convert.ToInt32(Math.Floor(Math.Sqrt(n)));
            Int32 y = 1;
            Int32 r = Convert.ToInt32(Math.Pow(Math.Floor(Math.Sqrt(n)), 2)) - n;
            Int32 q = (Int32)n / 2;
 
            Boolean exit = false;
            Byte state = 2;
            while (!exit)
            {
                switch (state)
                {
                    case 2:
                        if (r <= 0)
                            state = 4;
                        else
                            state = 3;
                        break;
                    case 3:
                        r -= y;
                        y += 2;
                        if (y > q)
                            return 0;   // Возвращаем ноль, если число простое.
                        else
                            state = 2;
                        break;
                    case 4:
                        if (r == 0)
                            exit = true; // Найдены сомножители!
                        else
                        {
                            r += x;
                            x += 2;
                            state = 3;
                        }
                        break;
                }
            }
 
            // Возвращаем первый сомножитель, а через ссылку второй.
            n = (x - y) / 2;
            return (x + y - 2) / 2;
        }
 
    }
}
для решения задачи:
Простые сомножители. Любое натуральное число может быть единственным образом разложено на простые сомножители. Напишите программу для выполнения такого разложения всех натуральных чисел от N1 до N2 с использованием рекурсивной программы. Только без рекурсии
Кто может помоч этот код перевести в C++/DOS
Буду очень благодарен
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru