кроссворды, задачки, головоломки

Сборник задач разного уровня сложности по математике, информатике, физике, химии, программированию, экономике etc. Логические задачи, SQL задачи, решение задач. Задачи с ответами, а также нерешённые задачи.

Petruchek.Info

Задача #1 из проекта "Эйлер"

Добавлено: 23.03.08 в 09:39
Метки: проект Эйлер

Натуральных чисел, меньших 10 и делящихся на 3 или на 5, всего 4: это числа 3, 5, 6 и 9. Их сумма = 23.

Найти сумму всех натуральных чисел, меньших 1000 и делящихся на 3 или на 5.

СПРЯТАТЬ РЕШЕНИЕ/ОТВЕТ

Здесь всё просто, даже полный перебор выдает нужный ответ.

Однако лучше его оптимизировать, потому что следующие задачи из этого проекта решаться полным перебором скорее всего не будут.

Например, отдельно просуммировать все числа, делящиеся на три (один цикл без проверок) и отдельно сложить все делящиеся на 5, но не делящиеся на 3 (один цикл с одной проверкой).

Сам ответ мы не публикуем по понятным причинам.
источник

Комментарии
Google says:
ST (27.04.08):
Какие циклы, простая арифметика

999/3=333
1+..+333=333*167=55611*3=A
995/5=199
1+...+199=199*100=19900*5=B

990/15=66
1+...+66=67*33=2211*15=C

Ответ: А+B-C
Andrey (23.10.09):
using System;

namespace ConsoleApplication4
{
class Program
{
static void Main()
{
int max = 1000, sum = 0;
for (int i = 1; i < max; i++)
{
if (i % 3 == 0) sum = sum + i;
if (i % 5 == 0) sum = sum + i;
}
Console.WriteLine(sum);
Console.ReadLine();
}
}
}
Суяргулова (03.02.10):
Var S,S1,i:byte;
Begin
S:=0;
S1:=0;
FOR i:=1 to 1000 do
begin
IF i mod 3=0 THEN S:=S+i;
IF i mod 5=0 THEN S1:=S1+i;
end;
S:=S+S1;
writeln (S);
readln;
End.
HexTA (28.03.10):
n = 999.9
res1 = 3*sum(range(n/3+1)) + 5*sum(range(n/5+1)) - 15*sum(range(n/15+1))
print res1

res2 = 0
for i in range(1,n+0.1):
if(not (i % 3) or not(i % 5)):
res2 += i
print res2
HexTA (28.03.10):
Все предыдущие решатели ошибаются, т.к суммируют числа кратные 15 по два раза ;)
PHP (10.07.11):
<?php
$sum=0;
for ($num=1;$num<1000; $num+=1)
{
if ($num%5==0 or $num%3==0)
$sum+=$num;
}
echo $sum. &#39;<br>&#39;;
?>
Java Odessit (05.03.14):
public class Task1 {

public static void main(String[] args) {
int sum = 0;
for (int i = 0; i < 1000; i++) {
if (i%3 == 0 || i%5 == 0) sum += i;
System.out.println("i=" + i + "; i/3=" + i/3 + "; i/5=" + i/5 + "; sum=" + sum);
}
System.out.println(sum);

}

}
Python (17.01.15):
a = 0
b = 0
bb = 0
c = 3
d = 5
x = 0

while a < 999:
a = a + 1

b = a % c
bb = a % d
if b == 0 or bb == 0:

x = x + a

print(x)
Protos (02.02.15):
Python
v=0
for i in range(1000):
if i%5==0 or i%3==0:
v=v+i
v
   Ответ редакции
999/3+999/5-999/15 (деление целочисленное)
Alex (04.05.16):
public class EulerEx1 {
public static void main(String[] args) {

int sum = 0;
int j = 0; // счетчик (кол-во результатов в строке)

for(int i = 1; i < 1000; i++) {

if (((i % 3) == 0) || ((i % 5) == 0)) {
System.out.print(i+ "\t"); // выводим результат на экран (если число кратно 3 или 5)
sum += i; // если число кратно 3 или 5, добавляем его к общей сумме

j++; // считает кол-во выводов результата на экран
if (j % 10 == 0) {
// после вывода каждых 10 результатов, делаем перенос на новую строку
System.out.print("\n");
}
}
}
System.out.println("\n\nСумма: " + sum); // выводим сумму всех найденных чисел, кратных 3 или 5
}
}
barbinkh (07.06.16):
Scala
(for (i <- 1 to 1000 if i % 3 == 0 || i % 5 == 0) yield i).sum
Сергей (16.02.17):
Где же все-таки ответ посмотреть. Как самый настоящий новичек без понятия правильно ли решил или насколько близок к правильному ответу, или вообще муть полная. Как же проверить себя то..

Java Script

var summ5 = 0;
var summ3 = 0;
for (var i = 5; i < 1000; i++) {
if (i % 5 != 0) continue;
summ5 += i;
}
for (var i = 3; i < 1000; i++) {
if (i % 3 != 0) continue;
summ3 += i;
}
document.write(summ5 + summ3); // результат: 266333
kraus (16.07.18):
python
x = 0
x2 = 0
a = 0
a2 = 0
for x in range(0, 1000):
x = x + 1
if x % 3 == 0 and x % 5 != 0:
x2 = x2 + x
for x in range(0, 1000):
a = a + 1
if a % 5 == 0 and a % 5 != 0:
a2 = a2 + a
question = a2 + x2
print(question)
Максим (20.08.18):
var S,i : integer;
begin
S := 0;

for i := 1 to 999do
If (i mod 3 = 0) or (i mod 5 = 0) then S := S + i ;

write(S);
end.
yelik217890 (11.01.19):
Sum = 0
N=1000
for a in range(N):
if a%3==0 or a%5==0:
Sum += a
print(Sum)
Екатерина (06.02.19):
233168
МожноКВам (06.03.19):
Суммачисел = 0;
для а = 1 по 999 цикл
если а%3=0 или а%5=0 тогда
Суммачисел = Суммачисел+а
конецЕсли
КонецЦикла;
Сообщить(Суммачисел);
233168 :)
Joy (06.03.19):
// C#
HashSet<int> ii = new HashSet<int>();
for (int f = 3; f < 1000; f += 3) ii.Add(f);
for (int f = 5; f < 1000; f += 5) ii.Add(f);
int sum = ii.Sum();
// 233168
Гость (06.03.19):
number = 0
summ = 0
while number < 1000:
if number % 15 == 0: #Важно! т.к можно посчитать числа которые деляться и на 3 и на 5
summ=(summ -number)
if number % 3 == 0:
summ=(number + summ)
if number % 5 == 0:
summ=(number + summ)
number += 1
print(summ)
#P.S Ответ 233168
Python Padavan (11.03.19):
#Python 3 / Python Padavan#
#Способ перебора#
i = 0
i3 = (i % 3)
i5 = (i % 5)
s3 = 0
s5 = 0
s15 = 0

while i < 1000:
if i3 == 0:
s3 += i
if i5 == 0:
s5 += i
if i3 == 0 and i5 == 0:
s15 += i
i += 1
i3 = (i % 3)
i5 = (i % 5)
print('Сумма натуральных чисел до 1000, кратных 3 или 5, равняется: ' + str(s3 + s5 - s15))
#P.S. Ответ 233168#
Python Padavan (11.03.19):
#Python 3 / Python Padavan#
#Способ математический / можете подставить в код любой НАТУРАЛЬНЫЙ диапазон \
# и любые НАТУРАЛЬНЫЕ числа кратности#
i1: int = 1
imax: int = 999
k1: int = 3
k2: int = 5

s = (imax // k1 * k1 + (k1 - i1 % k1) + i1) / 2 * (imax // k1) + \
(imax // k2 * k2 + (k2 - i1 % k2) + i1) / 2 * (imax // k2) - \
(imax // (k1 * k2) * (k1 * k2) + ((k1 * k2) - i1 % (k1 * k2)) + i1) / 2 * (imax // (k1 * k2))

print('Сумма натуральных чисел до ' + str(imax + 1) + ', кратных ' + \
str(k1) + ' или ' + str(k2) + ' равняется: ' + str(s))

#P.S. Ответ: 233168#
Аноним (12.03.19):
print(sum(i for i in range(1000) if i % 5 == 0 or i % 3 == 0))
Аноним (12.03.19):
i = 0
my_list = []
while i < 1000:
if i % 5 == 0 or i % 3 == 0:
my_list.append(i)
i = i + 1

print (sum(my_list))
Python Padavan (12.03.19):
Аноним который написал: print(sum(i for i in range(1000) if i % 5 == 0 or i % 3 == 0)) ,но не предстваился. Ты самый крутой Джедай (а может быть Ситх).
Аноним (15.03.19):
l1 = []
l2 = []

for x1 in range(1,1000):
if (x1 % 3) == 0:
l1.append(x1)
print (l1)
print(sum(l1))

for x2 in range(1,1000):
if (x2 % 5) == 0:
if (x2 % 3) != 0:
l2.append(x2)
print (l2)
print(sum(l2))

print (sum(l1) + sum(l2))
Аноним (15.03.19):
a=[x for x in range(1,1000) if x%3==0 or x%5==0]
print(sum(a))
Витос (20.03.19):
1000//3
333
1000//5
200
200-5
195
333+195
528
gdl68 (20.03.19):
x = 0
for i in range(1,1000):
if i % 3 == 0 or i % 5 == 0:
x +=i
print(x)
MyLongCode (20.03.19):
Писал на Питоне

nums = []
x = 1
while x < 1000:
x = x + 1
if x % 3 == 0:
nums.append(x)
if x % 5 == 0:
nums.append(x)
print(sum(nums))
Zaltic (21.03.19):
Python без циклов и ветвлений:

n3= int(999/3)
n5 = int(999/5)
sum = 3 * (n3 * (n3 + 1) / 2) + 5 * (n5 * (n5 + 1) / 2)
print(sum)

266333
вот скажите только почему на projecteuler.net не принимает это число как правильное? Алгоритм свой проверял.
Zaltic (21.03.19):
3, 6, 9, ... ~ 3*(1+2+3+....)
5, 10, 15, ... ~ 5*(1+2+3+ ....)
получаем сумму ряда натуральных чисел, которую вычисляется по формуле S=n*(n+1)/2
и все
Zaltic (21.03.19):
Понял свою ошибку, не учел общие кратные для 3 и 5
Окончательный исправленный вариант:


n3= int(999/3)
n5 = int(999/5)
n15 = int(999/15)
sum = 3 * (n3 * (n3 + 1) / 2) + 5 * (n5 * (n5 + 1) / 2) - 15 * (n15 * (n15 + 1) / 2)
print(sum)

233168
Аноним (23.03.19):
num = 3
num_1 = 5
if num < 1000:
n = 1000 // num
dob = n * num
sum_1 = dob + num
sum_2 = sum_1 / 2
res = dob * n
if num_1 < 1000:
n_1 = 1000 // num_1
dob_1 = n_1 * num_1
sum_4 = dob_1 + num_1
sum_3 = sum_4 / 2
res_1 = dob_1 * n
res_2 = res + res_1
print (res_2)
PYTHON (25.03.19):
number_sum=[x for x in range(0,1000)if x%3 == 0 or x%5 == 0]
print(sum(number_sum))
Anonim (28.03.19):
for a in range(1000):
if a % 5 == 0 or a % 3 == 0:
b.append(a)
print(sum(b))
Anonim (28.03.19):
Исправил
b=[]
for a in range(1000):
if a % 5 == 0 or a % 3 == 0:
b.append(a)
print(sum(b))
grimskal (29.03.19):
summa = 0
for i in range(1000):
if i % 3 == 0:
summa += i
elif i % 5 == 0:
summa += i

print(summa)

233168
First1Winner (31.03.19):
#Python3. Моя первая самостоятельная прога)

a = 1
i = 0
while a < 999:
a += 1
if a % 3 != 1:
if a % 3 != 2:
i = a + i
print(i)
b = 1
c = 0
while b < 999:
b += 1
if b % 5 == 0:
if b % 3 != 0:
c = b +c
print(c)
print(c+i)

#233168
Дядя Боря (02.04.19):
int sum = 0;

for (int i = 0; i < 1000; i++)
{
if ((i % 3 == 0) || (i % 5 == 0))
{
sum += i;
}
}
python (14.04.19):
n = 0
m = 0
while n < 1000:
if n % 3 == 0 or n % 5 == 0:
m += n
n += 1
print(m)

#233168
АРтур (16.04.19):
function krat(x, y, m) {
var count = 0;
for(let i = 1; i < m; i++) {
if (i%x === 0 || i%y === 0) {
count += i;
};
};
return count;
};

console.log(krat(3, 5, 1000)); //233168
JavaScript (19.04.19):
var arr = new Array(1000);
var k;
var summ=0;

for (k=0; k<arr.length; k++) {
arr[k] = k;
if (arr[k]%3===0 || arr[k]%5===0){
summ += arr[k];
}
}

document.write (summ);
JavaScript (19.04.19):
Не благодарите
Стас С++ (20.04.19):
Писал на С++ и почему-то получилось в ответе 234168, что не так? Спасибо!

#include <iostream>
using namespace std;
int main()
{
int n = 0, m = 1000;
int sum = 0;
for (int i = n; i <= m; i++)
if (i % 3 == 0|| i % 5 == 0)
{
cout << i << " \n\n";
sum += i;
}
cout << endl << sum; " \n";

return 0;


}
Стас С++ (20.04.19):
Исправленный вариант на С++, ответ верный

#include <iostream>

using namespace std;

int main()
{
int n = 0, m = 1000;
int sum = 0;
for (int i = n; i < m; i++) //равенство СТРОГОЕ
{
if (i % 3 == 0 || i % 5 == 0)
{
cout << i << " ";
sum += i;
}
}
cout << endl << sum << endl;
return 0;
}
кук (20.04.19):
i=1
res=0
while i+1<1000:
i+=1
if float(i) % 3==0:
res+=i
else:
if float(i)%5==0:
res+=i
print(res)
xAntonx (21.04.19):
python
#Извиняюсь за простоту только изучаю Python
first = list(range(3, 1000, 3))
second = list(range(5, 1000, 5))
third = first[:] + second[:]
third = list(set(third))
print(sum(third)) #233168
Павлик 30 годиков (22.04.19):
sum = 0
for i in range(1, 1000):
if i%3 == 0 or i%5 == 0:
sum = sum + i
else:
print("Cумма:",sum)
Аноним (25.04.19):
from math import fsum
x = int(input('Введите Х:'))
i = 2
p = []
while i < x:
if (i % 3 != 0) and (i % 5 != 0):
i+=1
continue
else:
p.append(i)
i+=1
print(p)
print ('Сумма всех чисел равна:' + str(sum(p)))
Python (15.05.19):
a = []#Числа кратные трем
for i in range(0,1000,3):
a.append(i)
b =[]#Числа кратные пяти
for i in range(0,1000,5):
b.append(i)
c = a + b
c = list(set(c))
x = sum(c)
print(x)
Комментарий от новенького:
Новенький является
Новенький не робот
Знаки на картинке: латинские буквы, арабские цифры


Есть на сайте: Онлайн кроссворды Задачи Онлайн игры Блог
Все работы, опубликованные на сайте — авторские, если не указано иное. Перепечатка возможна только с письменного разрешения владельцев ресурса, с обязательной ссылкой на сайт petruchek.info. Пишите нам: . Сайт должен работать в IE, FF, Opera, Safari.

Реклама:

Разработано в студии "Webous"о проектесайта карта

Реклама: