最大回文作为两个三位数字与R

时间:2018-02-02 22:30:52

标签: r

我的任务是写一个函数,检查一个数字是否是回文,然后检查该函数是否与回文数和非回文数一起工作。我的下一个任务是找到最大的回文数,它是两个三位数字的乘积和构成它的两个数字。为此,指令要求我使用两个for循环,一个嵌套在另一个循环中。我使用本网站上的一些JavaScript示例成功完成了大部分任务,并且能够使用两个三位数输出最大的回文。但是,我无法弄清楚如何输出两个数字,当它们相乘时,得到这个回文。有人能指出我正确的方向吗?

isPalindrome <- function(x) {
    return(x == paste(rev(unlist(strsplit(as.character(x), split = ''))), collapse = ''))
}

isPalindrome(11223344332211)
[1] TRUE
isPalindrome(34631111113185)
[1] FALSE

max <- 100001
for(x in 999:100) {
  for(y in 999:x) {
    product <- x * y
    if(max < product && (isPalindrome(product) == TRUE)) {
      max <- product
    }
  }
}
cat(max)
906609

根据我的阅读,我知道这两个数字是993和913,但无法弄清楚如何输出它们。例如,当我键入以下内容时,我会看到两个答案,但是我将924和962作为输出的一部分。

max <- 100001
for(x in 999:100) {
  for(y in 999:x) {
    product <- x * y
    if(max < product && (isPalindrome(product) == TRUE)) {
      max <- product
      cat(x, y)
    }
  }
}
924 962913 993> cat(max)
906609

谢谢!

1 个答案:

答案 0 :(得分:2)

你得到了正确的答案。提示:你的功能是找到两对值:

试试这个:

max <- 100001
for(x in 999:100) {
  for(y in 999:x) {
    product <- x * y
    if(max < product && (isPalindrome(product) == TRUE)) {
      max <- product
      cat(x, y, "\n")
    }
  }
}