Числа Армстронга с функцией границ помогают в R - PullRequest
0 голосов
/ 26 апреля 2018

Пожалуйста, посмотрите на прикрепленное изображение. Это то, что код в R должен обеспечить. Я изо всех сил пытаюсь написать соответствующий код для удовлетворения всех требований:

enter image description here

Это код, который я пробовал до сих пор:

>num = as.integer(readline(prompt="Enter a number: "))
>sum = 0
>temp = num

>while(temp > 0) {
digit = temp %% 10
sum = sum + (digit ^ 3)
temp = floor(temp / 10)
}

>if(num == sum) {
print(paste(num, "is an Armstrong number"))
} else {
print(paste(num, "is not an Armstrong number"))
}

1 Ответ

0 голосов
/ 26 апреля 2018

Это должно помочь вам начать.

  1. Определите функцию, которая возвращает TRUE или FALSE в зависимости от того, является ли ваш номер x числом Армстронга.

    is.ArmstrongNumber <- function(x) {
        temp <- x;
        sum <- 0;
        while(temp > 0) {
            digit <- temp %% 10
            sum <- sum + (digit ^ 3)
            temp <- floor(temp / 10)
        }
        if (x == sum) TRUE else FALSE;
    }
    
  2. Мы можем применить эту функцию к последовательности целых чисел 1:1000 и вернуть только те числа, которые являются числами Армстронга:

    (1:1000)[sapply(1:1000, is.ArmstrongNumber)]
    #[1]   1 153 370 371 407
    

Я оставлю биты ввода / вывода на ваше усмотрение.

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