Найти числа с суммой цифр 7 - PullRequest
1 голос
/ 30 апреля 2010

У меня вопрос, который я хочу отображать числа до 100, где сумма их цифр равна 7.

Может ли кто-нибудь помочь мне Предположим, что есть 25. через 2 + 5 = 7 будет отображаться. у меня проблема разбить 25 как 2 и 5

Ответы [ 5 ]

3 голосов
/ 30 апреля 2010

Мне трудно думать, зачем нужна такая программа.

В любом случае, 7 - это одно из таких чисел, следующее - 16, , чтобы получить ту же сумму, что вам нужно увеличить цифру 10 на единицу и уменьшить цифру на единицу на 1. Таким образом, вы фактически увеличиваете число на 9:

for($i=7;$i<=70;$i+=9) {
        echo $i."\n";
}

Выход:

7
16
25
34
43
52
61
70

EDIT:

Если вы хотите написать это без использования оператора модуля (я знаю, никто бы этого не сделал !!), вы можете взять каждое число, разбить его на цифры с помощью preg_split и затем найти сумму цифр с помощью array_sum:

for($i=1;$i<=100;$i++) {
        if(array_sum(preg_split('//',$i)) == 7)
                echo $i."\n";
}
1 голос
/ 30 апреля 2010

Этот код сделает это. Он использует математические знания о том, что первое и последнее числа, которые удовлетворяют условию, соответственно 7 и 70. Также известно, что следующий номер в последовательности всегда на девять больше, чем последний:

for ($num = 7; $num <= 70; $num += 9)
    echo $num . "\n";

Если вы хотите взять произвольное двузначное число и сложить цифры, вам понадобится целочисленное деление и оператор по модулю, например:

25 div 10 -> 2
25 mod 10 -> 5

Целочисленное деление $x на $y может быть выполнено в PHP с приведением, тогда как по модулю используется оператор %.

Программа, дающая более адаптируемый кейс, показана ниже:

for ($num = 1; $num < 100; $num++) {
    $tens = (int)($num / 10);
    $ones = $num % 10;
    if ($tens + $ones == 7)
        echo $num . "\n";
}
0 голосов
/ 22 июля 2014

ну, вы всегда можете использовать следующий код для генерации чисел до любого предела

все переменные являются целыми числами

for(i=1;i<=n;i++){
    //where n is the upper limit.In this case it is 100
    n=i;

    while(n!=0){

        d=n%10;// to extract the last digit

        s=s+7;//  to calculate sum of digits

        n=n/10;// to remove the last digit

    }

    if(s==7)

    System.out.println(+i);

}//close for loop
0 голосов
/ 30 апреля 2010

Существует конечное число комбинаций в качестве ответа на вопрос, и список невелик. Например:

7,  0 + 7 = 7
16, 1 + 6 = 7
25, 2 + 5 = 7
34, 3 + 4 = 7
43, 4 + 3 = 7
52, 5 + 2 = 7
61, 6 + 1 = 7
70, 7 + 0 = 7

Если вам нужно, чтобы оно было динамичным и работало на любое число ниже 10 (например, 6), начните с этого числа и добавляйте к нему 9, каждый раз, пока $num * 10 не выдаст вам цифры, которые вы ищем.

0 голосов
/ 30 апреля 2010

Ну, есть 7, 16, 25, 34, 43, 52, 61 и 70. Теперь у вас есть ответ, поэтому вам не нужна программа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...