цикл for, интегрированный в поле аргумента оператора if в c ++ - PullRequest
1 голос
/ 12 июля 2011

Я работаю над решением математической задачи.То, что я пытаюсь сделать, это иметь оператор if, который сравнивает переменную n с набором переменных от i 1 до 10. Есть ли способ сделать это в c ++?вот что я пытаюсь сделать:

 int smallPos(int n){
     if (n%for(int i=1;i<=10;i++)==0) {
        return n;
      }

Это, очевидно, неправильно, но есть ли способ обойти это?

Ответы [ 2 ]

4 голосов
/ 12 июля 2011

Похоже, вы пытаетесь сделать это:

int smallPos(int n)
{
    return (n % 232792560 == 0) ? n : <sentinel value>; // sentinel_value is the value return if n does not meet requirements
    //232792560 is the first number for which n % a: a ∈ {1,2,3...10} This is faster than checking each of these values.
}
2 голосов
/ 12 июля 2011

То, что вы хотите сделать, это:

int smallPos(int n)
{
    for (int i = 1; i <= 10; ++i)
    {
        if (n % i != 0) // check if n % i == 0, if not, then we shouldn't return n.
        { 
            return -1; // or whatever you want to return when not ALL the remainders are 0.
        }
    }

    return n; // If we get here then all the remainders were 0s.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...