Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты данной рассылки

Асмик Александровна
Статус: Академик
Рейтинг: 8321
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2671
∙ повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Профессор
Рейтинг: 2501
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / C/C++

Номер выпуска:1677
Дата выхода:19.06.2011, 13:30
Администратор рассылки:Гусятинер Леонид Борисович aka lamed (Академик)
Подписчиков / экспертов:301 / 177
Вопросов / ответов:1 / 2

Вопрос № 183614: Здравствуйте, уважаемые эксперты! Помогите пожалуйста решить 2 задачки на C: 1) Дано число N. Найти количество чисел в интервале от 1 до N, взаимно простых с N. 2) Даны натуральные числа m и n. Получить сумму натуральных чисел, меньших n, к...



Вопрос № 183614:

Здравствуйте, уважаемые эксперты! Помогите пожалуйста решить 2 задачки на C:

1) Дано число N. Найти количество чисел в интервале от 1 до N, взаимно простых с N.
2) Даны натуральные числа m и n. Получить сумму натуральных чисел, меньших n, квадрат суммы цифр которых меньше m.

желательно чтобы это работало на компиляторе Dev-C++

Заранее спасибо.

Отправлен: 14.06.2011, 13:10
Вопрос задал: Polotenchikko (Посетитель)
Всего ответов: 2
Страница вопроса »


Отвечает Асмик Александровна (Академик) :
Здравствуйте, Polotenchikko!

1 задача. Должно работать на любом компиляторе.
Код :
#include <stdio.h>
 #include <stdlib.h>

int algEuclid(int n, int m)
{
 while (n!=0 && m!=0)
 {
 if (n>m)
  n=n%m;
 else m=m%n;
 }
 if(m==0)
 return n;
 else return m;
}

int main(int argc, char* argv[])
{

 int n,i;
 int simple_count=0;
  printf("n=");
 scanf("%d", &n);
 for(i=1;i<n;i++)
  if(algEuclid(n,i)==1)
   simple_count++;
 
 printf("count of simples is %d\n",simple_count);
 return 0;
}

Ответ отправил: Асмик Александровна (Академик)
Ответ отправлен: 14.06.2011, 13:55
Номер ответа: 267724
Армения, Ереван
Адрес сайта: http://hasmikg.narod.ru

Оценка ответа: 5
Комментарий к оценке:
спасибо большое!

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 267724 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Отвечает Гусятинер Леонид Борисович aka lamed (Академик) :
    Здравствуйте, Polotenchikko!
    Задача 1
    Код :
    /* Даны натуральные числа m и n. Получить сумму натуральных чисел, */
    /* меньших n, квадрат суммы цифр которых меньше m. */
    /* G++/Code::Blocks */
    #include <stdio.h>
    #include <stdlib.h>
    int sum(int n);
    
    int main(void)
    {
        int m, n, s;
        int i;
        int total;
    
        printf("n=");
        scanf("%d", &n);
        printf("m=");
        scanf("%d", &m);
        total=0;
        for (i=1; i<n; i++)
        {
            s=sum(i);
            if (s*s<m)
            {
                if (i>1)
                    printf("+");
                printf("%d",i);
                total+=i;
            }
        }
        printf("=%d\n", total);
    
        return 0;
    }
    
    int sum(int n)
    {
        if (n<10)
            return n;
        else
            return n%10+sum(n/10);
    };


    Задача 2
    Код :
    /* Дано число N. Найти количество чисел в интервале от 1 до N, взаимно простых с N. */
    /* G++/Code::Blocks */
    #include <stdio.h>
    #include <stdlib.h>
    int nod(int m, int n);
    
    int main(void)
    {
        int n;
        int i;
        int k;
    
        printf("n=");
        scanf("%d", &n);
    
        k=0;
        for (i=2; i<n; i++)
        {
            if (nod(n,i)==1)
            {
                printf("(%d,%d);",n,i);
                k++;
            }
        }
        printf("->%d\n", k);
    
        return 0;
    }
    
    int nod(int m, int n)
    {
        if (m==n)
            return m;
        else if (n>m)
            return nod (n,m);
        else
            return nod(m-n,n);
    };

    Удачи!

    Ответ отправил: Гусятинер Леонид Борисович aka lamed (Академик)
    Ответ отправлен: 14.06.2011, 14:18
    Номер ответа: 267725
    Россия, Ковров
    Тел.: +79107793141

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 267725 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.



    В избранное