Найти сумму всех кратных 3 или 5 ниже 1000 - PullRequest
5 голосов
/ 03 октября 2010

Если мы перечислим все натуральные числа ниже 10, кратные 3 или 5, мы получим 3, 5, 6 и 9. Сумма этих кратных равна 23. У меня есть следующий код, но ответ не совпадает.

#include<stdio.h>
int main()
{
    long unsigned int i,sum=0;
    clrscr();
    for(i=0;i<=1000;i++)
    {
        if((i%5==0)||(i%3==0))
        {
            sum=sum+1;
        }
    }
    printf("%d\n",sum);
    getchar();
    return 0;
}

Ответы [ 15 ]

0 голосов
/ 05 февраля 2016

Используя пошаговый подход, вы можете сделать версию:

#include <stdio.h>

int main ( void ) {

    int sum = 0;

    for (int i = 0; i < 1000; i += 5) {
        sum += i;
    }
    for (int i = 0; i < 1000; i += 3) {
        if (i % 5) sum += i;  /* already counted */
    }
    printf("%d\n", sum);
    return 0;
}

, что делает намного меньше modulo вычислений.

Фактически, со счетчиком вы можете сделать версию без таковой:

#include <stdio.h>

int main ( void ) {

    int sum = 0;
    int cnt = 6;

    for (int i = 0; i < 1000; i += 5) {
        sum += i;
    }
    for (int i = 0; i < 1000; i += 3) {
        if (--cnt == 0) cnt = 5;
        else sum += i;
    }
    printf("%d\n", sum);
    return 0;
}
0 голосов
/ 05 февраля 2016
int Sum(int N) {
long long c = 0;
    N--; //because you want it less than 1000 if less than or equal delete this line
    int n = N/3,b = N/5,u = N/15;
    c+= (n*(n+1))/2 * 3;
    c+= (b*(b+1))/2 * 5;
    c-= (u*(u+1))/2 * 15;
    return c;
}
0 голосов
/ 26 ноября 2014

Python реализация проблемы.Короткий, точный и толстый.

sum=0
for i in range(1000):
    if (i%3==0) or (i%5==0):
        sum=sum+i
print sum
0 голосов
/ 08 ноября 2014

Вы можете начать с итерации от 3 до 1000 с шагом 3 (3,6,9,12 и т. Д.), Добавив их к sum как,

int i = 3, sum = 0;
for (; i < 1000; i += 3) {
  sum += i;
}

Затем вы можете выполнить итерацию от 5 до 1000 на 5 (пропуская кратные 3, поскольку они уже были добавлены), добавив эти значения к sum, а также

for (i = 5; i < 1000; i += 5) {
  if (i % 3 != 0) sum += i;
}

Затем отобразите sum

printf("%d\n", sum);
0 голосов
/ 08 ноября 2014
package com.venkat.test;

public class CodeChallenge {

    public static void main(String[] args) {

        int j, sum=0;

        for ( j = 0; j <=1000; j++) {               
            if((j%5==0)||(j%3==0))
            {
                sum=sum+j;
            }               
        }           
        System.out.println(sum);            
    }    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...