Эйлер задача 1 Проект Эйлера Задачи Golang and Rust
https://euler.jakumo.org/problems.html
https://gobyexample.com.ru/
https://tourofrust.com/00_ru.html
-----
package main
import "fmt"
func main() {
sum := 0
for i := 1; i < 1000; i++ {
if i%3 == 0 || i%5 == 0 {
sum += i
}
}
fmt.Println(sum)
}
-----
fn main() {
let mut sum:u32 = 0;
for i in 0..1000 {
if i % 3 == 0 || i % 5 == 0 {
sum = sum + i;
}
}
println!("{}", sum);
}
-------------
Решение без цикла на js:
n3 = Math.floor(1000/3);
an3 = 3+3*(n3-1); // Math.floor(1000/3)*3
n5 = Math.floor(1000/5);
an5 = 5+5*(n5-1);
n15 = Math.floor(1000/15);
an15 = 15+15*(n15-1);
S=(3+an3)/2*n3+(5+an5)/2*n5-(15+an15)/2*n15;
console.log(S);
(3+Math.floor(1000/3)*3)/2*Math.floor(1000/3)
166833
(3+999)/2*333
166833 Это сумма чисел, которая делится на 3 без остатка
Гуглить
Арифметическая прогрессия
Сумма арифметической прогрессии
2 5 8 11 14 ..
A(n)=A(n-1)+d
A(1)=A(1)
A(2)=A(1)+d
A(3)=A(2)+d = A(1)+d+d =A(1)+2d
A(4)=A(1)+d = A(1)+3d
=> A(n) = A(1)+(n-1)d
https://www.youtube.com/watch?v=iCQL469ZzM0