Сложите все натуральные числа до тысячи, кратные 3 или 5

Кратные числа

Давно не писал. Сегодня выходной и я решил начать, время от времени решать задачи с проекта Эйлера. Эти задачи помогут больше понять язык программирования и математику.

В этой задачи и следующих задач, я попытаюсь делать решения на двух языках программирования, на языке Си и на языке Python. Эта задача простая, но все же я решил начать с нее, наверника новичкам она поможет.

Для тех кто не знает, что такое натуральные числа - это числа которые начинаются с 1,2,3,4... и до бесконечности.  А кратные числа 3 и 5 - это такие числа, которые делятся на 3 и на 5 с остатком 0. Тоесть 15:3=5, здесь остаток 0, значит число 15, кратное 3. Теперь я попробую решить эту задачу на языке Python:

Для начала давайте выведем на печать все натуральные числа до тысячи кратные 3:

 #!/usr/bin/python
 # -*- coding: utf-8 -*-

 for i in range(1,1001):
     if i % 3 == 0:
         print (i)

Пример вывода последних чисел:

...
954
957
960
963
966
969
972
975
978
981
984
987
990
993
996
999

Далее давайте выведем на печать все натуральные числа до тысячи кратные 5:

 #!/usr/bin/python
 # -*- coding: utf-8 -*-

 for i in range(1,1001):
     if i % 5 == 0:
         print (i)

Пример вывода последних чисел:

915
920
925
930
935
940
945
950
955
960
965
970
975
980
985
990
995
1000

Программа выполнялась в Python 3.3.1 под ОС Arch

В Python % означает остаток от деления, а функция range(1,1001), формирует Python список [1,2,3,4,5,6..]

Можно было записать все вручную, например:

 for i in [1,2,3,4,5]:
     print (i)

Выведет это:

1
2
3
4
5

Теперь давайте выведем Все натуральные числа до тысячи кратные 3 или 5:

 #!/usr/bin/python
 # -*- coding: utf-8 -*-

 for i in range(1,1001):
     if i % 5 == 0 or i % 3==0:
         print (i)

Вывод на печать будет такой:

965
966
969
970
972
975
978
980
981
984
985
987
990
993
995
996
999
1000

В этом куске кода мы добавили оперетор or, который означает или, тоесть мы говорим программе, выводи на печать число которое делится на 3 и у которого остаток от деления 0 или выводи число которое делится на 5 и у которого остаток от деления 0.

Также вместо or, мы могли использовать другие операторы, такие как and.

Теперь давайте до конца доделаем нашу задачу, код получится следующий:

 #!/usr/bin/python
 # -*- coding: utf-8 -*-

 sum=0
 for i in range(1,1001):
     if i % 5 == 0 or i % 3==0:
         sum = sum + i
 print (sum)

На экран выведет это число:

234168

Здесь мы добавили новую переменную и просто все числа складывали внутри цикла и условия. Теперь получим тоже самое на языке Си:

#include <stdio.h>
 main(){
 int sum=0,i;

 for(i=1;i<=1000;i++)
     if (i % 5 ==0 || i % 3 == 0)
         sum+=i;
 printf("%d", sum);

 }

Получили тоже самое число: 234168

Теперь посмотрим какие изменения в коде языка си. Добавили заголовочный файл stdio.h.

Также в начале объявили переменные и присвоили им тип, оператор or заменился другим оператором ||, прибавление мы сделали через +=. Практически тоже самое.

В си я делал компилирование с помощью cc zadacha.c далее запускал ее как ./a.out. Если вы на windows, то компилируйте и запускайте в ide dev-c++, не забыв подключить сишный компилятор.

admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *