Pandigital Number in Java

2025 年 5 月 7 日 | 阅读 4 分钟

在本节中,我们将讨论 全数字是什么 以及它们的版本,并创建 Java 程序 来检查给定的数字是否为 全数字全数字程序 经常出现在 Java 编码面试和学术中。

全数字

一个 10 位整数,其中每位数字(0 到 9)在其基数中恰好出现一次,被称为 全数字。它是 OEIS 序列 A050278

请注意,基数(数字的数量)必须小于或等于 36。基数 36 包含数字 0 到 9 以及字母 A 到 Z。

全数字有以下几种版本

无零的全数字

一个 9 位数字,其中每位数字(1 到 9)至少出现一次,被称为 无零全数字。它是 OEIS 序列 A05028 9。它不包含 0。例如,123456789、123456798、123456879、123456897、123456978、123456987、123457689、123457698、123457869 等。

素数全数字

一个包含数字 0 到 9 的数字被称为 全数字。在素数全数字中,数字可以出现多次。它是 OEIS 序列 A050288。例如,10123457689、10123465789、10123465897、10123485679、10123485769、10123496857、10123547869、10123548679、10123568947、10123578649、10123586947 等。

基于 8 的全数字素数

一个至少有九个八进制数字的全数字被称为 基于 8 的全数字素数。它是 OEIS 序列 A175271。例如,17119607、17120573、17121077、17127839、17128931、17132347、17135413、17136029、17136869、17148349、17159479、17164757 等。

基于 9 的全数字素数

一个在基数 9 中至少有十位数字的全数字被称为 基于 9 的全数字素数。必须至少有一个重复的数字,该数字甚至可能不是偶数,否则得到的数字就是偶数。它是 OEIS 序列 A175280。例如,393474749、393474821、393475373、393481069、393486901、393488437、393492797、393494477、393499429、393499517、393500741、393528029 等。

全数字(序列 A050278)中,两个相邻数字的乘积作为数字的子字符串可见。它是 OEIS 序列 A198298。例如,3205486917、3207154869、4063297185、4063792185、4230567819、4230915678、4297630518、4297631805、5042976318、5063297184、5079246318、5184063297、5420796318 等。

从上面的数字(5042976318)中任取一个,我们观察到两个相邻数字的乘积作为子字符串出现在数字中。例如,4*2=8,9*7=63,6*3=18。

类似地,全数字(序列 A050278)中,三个相邻数字的乘积作为数字的子字符串可见。它是 OEIS 序列 A210013。例如,
5631890724, 6581324079, 6581324097, 7249056318.

从上面的数字(5631890724)中任取一个,我们观察到三个相邻数字的乘积作为子字符串出现在数字中。例如,5*6*3=90,7*2*4=56,1*8*9=72。

OEIS 中还有另外两个全数字序列 A115927A054383

让我们通过示例来理解。

全数字示例

假设我们取数字 9172365480 及其基数 10。

我们观察到该数字包含从 0 到 9 的所有数字,并且每个数字恰好出现一次。因此,它是一个 全数字

我们再取一个数字 103456879,其基数是 10。

该数字包含 9 位数字。它 不是全数字,因为该数字有 9 位数字,并且缺少一位数字。

类似地,我们也可以检查其他基数。让我们举个例子。

考虑数字 123456789ABCDEFGHIJKLMOPQRSTUVWXYZ,其基数是 36。它 不是全数字,因为数字中缺少 N

如果基数为 36 的数字中缺少任何数字或字母,则该数字不可能是全数字。

其他一些全数字是 1023456789、1023456798、1023456879、1023456897、1023456978、1023456987、1023457689、1023457698、1023457869 等。

全数字 Java 程序

给定一个整数 N,其基数为 b。我们需要检查给定数字在指定基数下是否为全数字。

注意:以下程序不适用于基数 8 和基数 9 的全数字素数。

PandigitalNumberExample.java

输出 1

Enter the base of the number: 10
Enter the number: 0987654321
The given number is a pandigital number.

输出 2

Enter the base of the number: 36
Enter the number: 2345609871ABCDEFGHIJKLMNOPQRSTUVWXYZ
The given number is a pandigital number.

输出 3

Enter the base of the number: 13
Enter the number: 123456ABCD789
The given number is not a pandigital number.

注意:字母和数字的顺序无关紧要。所有字母(A-Z)或所有数字(0-9)可以先出现。不允许在数字之间使用字母,反之亦然。该数字必须是 10 位数字。如果尝试输入 9 位数字,则会显示 ArrayIndexOutOfBoundsException。

Pandigital Number in Java