Вопрос № 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++
#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;
}
/* Даны натуральные числа 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 (Россия) |
Еще номера »
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.