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

задача с циклами "Гадание" - C++

Восстановить пароль Регистрация
 
Remedych
0 / 0 / 0
Регистрация: 28.12.2011
Сообщений: 24
09.02.2012, 13:32     задача с циклами "Гадание" #1
http://********/index.asp?main=task&id_task=23
помогите решить

дальше незнаю как
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <stdio.h>
using namespace std;
 
int main (){
int n,k,s=0;
  freopen("input.txt","r",stdin);
  freopen("output.txt","w",stdout);
   for k=1..n{
       if(n%k = 0) s = s+k;
  }
  
  write(s);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2012, 13:32     задача с циклами "Гадание"
Посмотрите здесь:

Задача из книги "Програмирование - принцыпы и практика использования C++" C++
C++ Найти ошибку в решении "Числа - палиндрома" (задача с acmp)
C++ Задача "Гонки по улицам" (обход ориентированного графа)
Перевод из двоичной системы в десятичную, задача 2.30 "Как программировать на С++" C++
C++ Вычислить значение суммы. Задача с использованием "длинной арифметики".
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
09.02.2012, 14:58     задача с циклами "Гадание" #2

Не по теме:

Вам бы начать с предыдущих 22 задач этого же сайта. Там наверняка поднималась тема циклов



C++
1
2
3
4
5
int sum = 1+N;//N всегда делится на 1 и само себя без остатка
for(int i = 2,i_end = N/2;i <= i_end;++i)
{
     if(N%i == 0)sum += i;
}
-=ЮрА=-
Заблокирован
Автор FAQ
09.02.2012, 15:53     задача с циклами "Гадание" #3
Цитата Сообщение от Remedych Посмотреть сообщение
помогите решить
- ниже код на плюсах который решает данную задачу
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
#include <iostream>
#include <fstream>
using namespace std;
 
int main()
{
    int i, n, sum;
    ifstream ifs("input.txt");
    ofstream ofs("output.txt");
    if(!ifs)
        cout<<"Error open input.txt\n";
    else
    if(!ofs)
        cout<<"Error open output.txt\n";
    else
    {
        ifs>>n;
        sum = n;
        for(i = 1; i < 10; i++)
        {
            if(n % i == 0)
                sum += i;
        }
        cout<<"sum = "<<sum<<endl;
        ofs<<sum;
    }
    if(ifs)
        ifs.close();
    if(ofs)
        ofs.close();
    system("pause");
    return 0;
}
Remedych
0 / 0 / 0
Регистрация: 28.12.2011
Сообщений: 24
09.02.2012, 15:55  [ТС]     задача с циклами "Гадание" #4
I.M., все равно не могу понять как решить эту задачу
-=ЮрА=-
Заблокирован
Автор FAQ
09.02.2012, 16:06     задача с циклами "Гадание" #5
Remedych ,а код я зачем приводил - скомпилируй и запиши в файлы проверочные значения...

Не по теме:

(ну лан отписываюсь тогда от топика)

I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
09.02.2012, 16:07     задача с циклами "Гадание" #6
Вам выше Юра готовую программу привел. Используйте.

Только исправьте здесь 10 на n
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
for(i = 1; i < 10; i++)
-=ЮрА=-
Заблокирован
Автор FAQ
09.02.2012, 16:11     задача с циклами "Гадание" #7
Цитата Сообщение от I.M. Посмотреть сообщение
Только исправьте здесь 10 на n
- зачем???Любое двузначное число может быть представлено в виде произведения двух однозначных(т.е. произведение чисел от 1 до 10, размышляя на эту тему думаю что условие по i следует ограничить 13-ю и всё), тобишь

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
for(i = 1; i < 13; i++)
* * * * * * * * {
* * * * * * * * * * * * if(n % i == 0)
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
09.02.2012, 16:19     задача с циклами "Гадание" #8
Наверное я чего-то не понимаю, но n может быть до 1000.
Да и потом, даже если взять ваше утверждение, то возьмем число 51. 51 = 3*17. Значит sum = 1+3+17+51
-=ЮрА=-
Заблокирован
Автор FAQ
09.02.2012, 16:29     задача с циклами "Гадание" #9
Цитата Сообщение от I.M. Посмотреть сообщение
3*17
Цитата Сообщение от I.M. Посмотреть сообщение
но n может быть до 1000.
- ну и берём от балды 645
Делится на
1 - понятное дело
645 - стопудово
2 - фигушки
3 - оносамое
4 - 2*2 - в топку
5 - угу
6 - как и 4-ри 3*3 - в топку
7 - пипец знаков после запятой - НЕТ
8 - на кой делить на 8-мь если это 2 и 4, т.е выкинуть
9 - 3 *3 тоже в топку
11 - ээ неее
12 - 3*4 тоже в топку
13 - нет
14 - 2*7 не надо
15 - 3*5 не надо
16 - 4*4 не надо
17 - нет, но надо включить его в список
18 - 2*9 = 2*3*3 - в топку
19 - вот его ещё возьмём
На сим список
1,2,3,5,7,11,13,17,19
Все остальные числа - комбинации приведенных выше и поэтому говоря что делится на 9 - кривим душой - оно делится на 3-ри, хотя может я чего то сам не допопонимаю...

Добавлено через 53 секунды
Цитата Сообщение от I.M. Посмотреть сообщение
51
= 3 + 51 + 17 + 1 ну вот как раз по списку

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
На сим список
1,2,3,5,7,11,13,17,19
сейчас подправлю код под это дело
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
09.02.2012, 16:33     задача с циклами "Гадание" #10
В задании написано - найти сумму всех делителей, а не только простых делителей.
И если уж поправлять, тогда нужно брать список всех простых чисел до sqrt(1000). Т.е. до 31 включительно.
-=ЮрА=-
Заблокирован
Автор FAQ
09.02.2012, 17:18     задача с циклами "Гадание" #11
Цитата Сообщение от I.M. Посмотреть сообщение
В задании написано - найти сумму всех делителей, а не только простых делителей.
И если уж поправлять, тогда нужно брать список всех простых чисел до sqrt(1000). Т.е. до 31 включительно.
- вообще задание туповатое, вот и ломаем голову. Нет брать числа кратные простым сомножителям это глупость, нужен список простых чисел в диапазоне от 1 до 1000, тперь мне стало понятно, момент...

Добавлено через 17 минут
http://ru.wikipedia.org/wiki/Простые_числа

Добавлено через 2 минуты
Как найти простое число
1
Способ 1. Решето Эратосфена.
По этому методу, чтобы найти все простые числа не больше определенного значения Х, необходимо выписать подряд все целые числа от одного до Х. Возьмем число 2 как первое простое число. Вычеркнем из списка все числа, делящиеся на 2. Затем возьмем следующее после двойки, не вычеркнутое число, и вычеркнем из списка все числа, делящиеся на взятое нами число. И далее каждый раз будем брать следующее не вычеркнутое число и вычеркивать из списка все числа, делящиеся на взятое нами число. И так до тех пор пока выбранное нами число не станет больше, чем Х/2. Все оставшиеся в списке не вычеркнутые числа являются простыми

2
Способ 2. Решето Сундарама.
Из ряда натуральных чисел от 1 до N исключаются все числа вида
х + у + 2ху,
где индексы х (не больший у) пробегают все натуральные значения, для которых х+у+2ху не больше N, а именно значения х=1, 2,...,((2N+1)1/2-1)/2 и х=у, х+1,...,(N-х)/(2х+1)ю\. Затем каждое из оставшихся чисел умножается на 2 и увеличивается на 1. Полученная в результате последовательность представляет собой все нечётные простые числа в ряду от одного до 2N+1.

3
Способ 3. Решето Аткина.
Решето Аткина представляет собой сложный современный алгоритм нахождения всех простых чисел до заданного значения Х. Основная суть алгоритма состоит в представлении простых чисел как целых с нечетным числом представлений в данных квадратных формах. Отдельный этап алгоритма отсеивает числа, кратные квадратам простых чисел в интервале от 5 до Х.

4
Тесты простоты.
Тесты простоты-- это алгоритмы, позволяющие определить, является ли конкретное число Х простым.
Один из самых простых, но и трудоемких тестов-- это перебор делителей. Он состоит в преборе всех целых чисел от 2 до квадратного корня из Х и в вычислении остатка от деления Х на каждое из этих чисел. Если остаток от деления числа Х на некоторое число (больше 1 и меньше Х) равен нулю, то число Х является составным. Если выявляется, что число Х невозможно сократить без остатка ни на одно из чисел, кроме единицы и самого себя, то число Х простое.
Кроме этого способа существует также большое количество других тестов для тестирования простоты числа. Большинство этих тестов являются вероятностными и используются в криптографии. Единственный тест, гарантирующий получение ответа (тест AKS) очень сложен в вычислении, что затрудняет его практическое применение
- материал взят из данного источника
http://www.kakprosto.ru/kak-37933-ka...prostoe-chislo
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.02.2012, 01:08     задача с циклами "Гадание"
Еще ссылки по теме:

Задача "Кто старше?" (подскажите где ошибка в коде) C++
Задача "Гигабашня": минимальное расстояние до этажа со счастливым номером C++
Задача "Движение по клеткам таблицы" (Динамическое программирование) C++

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

Или воспользуйтесь поиском по форуму:
Remedych
0 / 0 / 0
Регистрация: 28.12.2011
Сообщений: 24
10.02.2012, 01:08  [ТС]     задача с циклами "Гадание" #12
дак как решить задачу правильно?

Добавлено через 27 минут
все всем спасибо, сам допер
вот решение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 #include <iostream>
using namespace std;
 
int main ()
{
  freopen("input.txt","r",stdin);
  freopen("output.txt","w",stdout);
   int n,k,s=0;
   cin>>n;
   
   for(k = 1 ; k <= n ; k++) 
 { 
 if(n % k == 0)
 s=s+k;  
 }
   cout<<s;
 
   
  }
Yandex
Объявления
10.02.2012, 01:08     задача с циклами "Гадание"
Ответ Создать тему
Опции темы

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