Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как сумму арифметической прогрессии с определенным шагом (https://javascript.ru/forum/misc/73147-kak-summu-arifmeticheskojj-progressii-s-opredelennym-shagom.html)

Julia1991 25.03.2018 00:14

как сумму арифметической прогрессии с определенным шагом
 
Подскажите, как подсчитать сумму арифметической прогрессии от 1 до N c шагом 3 (1,4,7....) используя цикл for c пустым телом цикла?

Nexus 25.03.2018 12:10

function fn(n){
    for(var s=i=1;i<n;s+=(i+=3)){};
    //Или так 
    //for(var i=1,s=i;i<n;i+=3,s+=i){};

    return s;
}
alert(fn(7));

рони 25.03.2018 14:00

Nexus,
:-?
function fn(n){
    for(var s=i=1;i<n;s+=(i+=3)){};
    //Или так
    //for(var i=1,s=i;i<n;i+=3,s+=i){};

    return s;
}
alert(fn(5) == fn(7) );//??? 1 + 4 == 1 + 4 + 7

рони 25.03.2018 14:06

Подскажите, как подсчитать сумму арифметической прогрессии от min до max c шагом step НЕ!!! используя цикл?
:)

Nexus 26.03.2018 09:54

рони, проверку на корректность введенного числа автор и сам может дописать.
Цитата:

Сообщение от рони
Подскажите, как подсчитать сумму арифметической прогрессии от min до max c шагом step НЕ!!! используя цикл?

Мб. так?
function fn(min,max,step){
	var n=Math.ceil((max-min)/step);

	return ((2*min+step*(n-1))/2*n);
};

alert(fn(1,7,3));

рони 26.03.2018 10:53

Цитата:

Сообщение от Nexus
Мб. так?

да, в целом верно, n возможно надо уточнить ... нужно проверять

рони 26.03.2018 11:24

Nexus,
function fn(min,max,step){
	var n=Math.ceil((max-min)/step);

	return ((2*min+step*(n-1))/2*n);
};

alert(fn(1,7,2)); // 9 ??? 1 + 3 + 5 + 7  = 16

Nexus 26.03.2018 11:29

рони,
function fn(min,max,step){
	var n=1+Math.ceil((max-min)/step);

	return ((2*min+step*(n-1))/2*n);
};

alert(fn(1,10,3));//22 ~ 1+4+7+10=22

рони 26.03.2018 12:08

Nexus,
:-?
function fn(min,max,step){
  var n=1+Math.ceil((max-min)/step);

  return ((2*min+step*(n-1))/2*n);
};

alert(fn(9,15,5));//42 ???? 9 + 14 = 23

Nexus 26.03.2018 12:17

рони, так, вроде бы, правильно
function fn(min,max,step){
	var n=1+Math.floor((max-min)/step);

	return ((2*min+step*(n-1))/2*n);
};

alert(fn(9,15,5));


Часовой пояс GMT +3, время: 07:18.