Это какой-то алгоритм или формула? - PullRequest
0 голосов
/ 08 ноября 2019

Серия совершенных чисел
N: 1 = 1
N: 2 = 34
N: 3 = 122
N: 4 = 1111
N: 5 = 11123
N: 6 так далее ... ??

Здесь N - количество цифр в целом числе.

Число называется идеальным, если оно соответствует этим Правилам: -

Число (без начальных нулей) не содержит никаких других нулей.
Сумма квадратов всех цифр числа является идеальным квадратом.

Пример: -Для N = 2 34
34: - 3 ^ 2 + 4 ^ 2: - 25, что является идеальным квадратом

Как вычислитьСледующая наименьшая цифра из N цифр этой серии. Есть ли какой-либо алгоритм или формула, следующая за этой серией .. ??

1 Ответ

1 голос
/ 08 ноября 2019
package main

import (
    "fmt"
    "math"
    "strconv"
)

func main() {
    all := 1
    for all < 21 {
        fmt.Println(keepdo(0,0,all))
        all++
    }

}

func keepdo(i int,sum int, ma int)  (bool, int, string){
    if i>= ma {
        return square_check(sum), sum, ""
    }
    try := 1
    for try < 10 {
        sumc := sum +try*try
        check, s,ss := keepdo(i+1,sumc, ma)
        if check {
            return check, s, strconv.Itoa(try) + ss
        }
        try++
    }
    return false, sum, ""
}

func square_check(a int) bool {
    var int_root int = int(math.Sqrt(float64(a)))
    return (int_root * int_root) == a
}

Это очень наивное решение. Должно сработать. Пожалуйста, дайте мне знать, если какие-либо улучшения

https://play.golang.org/p/drVPaE0R71I

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