Decision
1) O (n):
A slight improvement for other answers ( imay start with 3):
public static void main(String[] args) {
int sum = 0;
for (int i = 3; i < 1000; i++) {
if (i % 3 == 0 || i % 5 == 0) {
sum += i;
}
}
System.out.println(sum);
}
For a larger input number ( Integer.MAX_VALUEinstead 1000), you need:
2) O (n) = O (n/3) + O (n/5) + O (n/15):
( , ):
public static void main(String[] args) {
long sum = 0 ;
for ( long i = 3 ; i < 1000 ; i+=3 ){
sum+=i;
}
for ( long i = 5 ; i < 1000 ; i+=5 ){
sum+=i;
}
for ( long i = 15 ; i < 1000 ; i+=15 ){
sum-=i;
}
System.out.println(sum);
}
n (1000) i, n/3 + n/5 + n/15 (600) i. - , ( if).
(Integer.MAX_VALUE 1000) :
3) O (1):
:
1 + 2 +... + n = n * (n + 1)/2
public static void main(String[] args) {
int nr = 1000;
nr--;
int x3 = nr/3;
int x5 = nr/5;
int x15 = nr/15;
long sum1 = 3*x3*(x3+1);
long sum2 = 5*x5*(x5+1);
long sum3 = 15*x15*(x15+1);
long sum = (sum1+sum2-sum3)/2;
System.out.println(sum);
}
, Integer.MAX_VALUE, ( 1 ).