Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] Найти числа, которые делятся только на 2 или 5


Автор: fss1994 22.10.2013, 22:23
Вывести все числа (от 1 до 300), которые делятся ТОЛЬКО на 2 или 5. помогите, пожалуйста!!

Автор: bsa 22.10.2013, 22:56
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: Pawl 23.10.2013, 15:18
число, которое делится ТОЛЬКО на 2 или 5 одно - 10. Остальные делятся еще хотя-бы на 10:
Код

#include <stdio.h>
#include <windows.h>

void main()
{
    for (int i = 1; i <= 300; i++)
    {
        if (i % 2 == 0 && i % 5 == 0 && i % 3 != 0 && i % 4 != 0 && i % 6 != 0 && i % 7 != 0 && i % 8 != 0 && i % 9 != 0)
        {
            printf("%d\n", i);
        }
    }
    system("pause");
}

Автор: baldina 23.10.2013, 16:50
наименьшее общее кратное?

Код

#include <iostream>
#include <cmath>
#include <algorithm>
#include <functional>
#include <vector>

template <typename T>
T gcd (T m, T n) {
    while (n != T()) {
        m %= n;
        std::swap (m,n);
    }
    return m;
}

template <typename T> T unit() { return T(1); }

template <typename Iter>
typename Iter::value_type gcd_set (Iter begin, Iter end) {
    typedef typename Iter::value_type T;
    T val(unit<T>());
    while (begin != end)
      val = gcd (val,*begin++);
    return val;
}

template <typename Iter>
typename Iter::value_type lcm_set (Iter begin, Iter end) {
    typedef typename Iter::value_type T;
    T mult (std::accumulate (begin, end, unit<T>(), std::multiplies<T>()));
    return std::abs (mult) / gcd_set (begin, end);
}

int main()
{
    std::vector<int> values = {2, 5};
    int lcm = lcm_set (values.begin(), values.end());
    if (1 <= lcm && lcm <= 300)
        std::cout << lcm << std::endl;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)