問題タブ [luhn]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 奇数桁の合計
これを行うことで、カード番号の1桁おきに合計しようとしています:
得られるのは 6 だけです。探している合計は 37 になるはずです。
algorithm - notepad++ を使用して 16 桁の長い文字列 (Luhn アルゴリズム) を検索するにはどうすればよいですか?
クレジットカード番号を含む大きなテキストファイルがあります。このファイルを調べて、可能なクレジットカード番号を見つける必要があると言われました。これを使用して、メモ帳 ++ の「ファイル内を検索」正規表現検索モードを使用しています。単純な式: 4\d{15} (これは通常、VISA デビット/クレジットである 4 で始まる 16 桁の文字列を検索します) をコピーして、クレジット カード検証スクリプトに貼り付けます。
とにかく、4 で始まる 16 桁の長い文字列を検索し、Luhn アルゴリズムを使用しているかどうかを確認する式を作成する方法はありますか (有効であることを確認します)。
これは Luhn アルゴリズムです。
1) 最後から 2 番目の数字から始めて左に移動し、すべての交互の数字の値を 2 倍にします。
2) 左から始めて、影響を受けていないすべての数字を取得し、ステップ 1 のすべての個々の数字の結果にそれらを追加します。ステップ 1 の数字のいずれかの結果が 2 桁の場合は、最初に 2 つの数字を追加してください。 (つまり、18 は 1+8 になります)。基本的に、方程式はすべての数字を加算する通常の加算問題のように見えます。
3) クレジット カード番号が有効であるためには、ステップ 2 の合計が 0 で終わる必要があります。
java - luhn アルゴリズムを使用してクレジット カード番号を検証する
次のプログラミング課題について質問があります。
クレジット カード番号は特定のパターンに従います。クレジット カードの数字は 13 ~ 16 桁である必要があります。次で始まる必要があります。
• Visaカードの場合は4枚
• マスターカードの場合は 5
• American Express カードの場合は 37
1954 年、IBM の Hans Luhn は、クレジット カード番号を検証するためのアルゴリズムを提案しました。このアルゴリズムは、カード番号が正しく入力されているかどうか、またはクレジット カードがスキャナによって正しくスキャンされているかどうかを判断するのに役立ちます。ほとんどすべてのクレジット カード番号は、一般に Luhn チェックまたは Modulus 10 チェックとして知られているこの有効性チェックに従って生成されます。これは次のように説明できます。例として、カード番号 4388576018402625 を考えてみましょう。
- 右から左に 1 桁ごとに 2 倍します。桁を 2 倍すると 2 桁になる場合は、その 2 桁を足して 1 桁の数にします。
2×2=4
2×2=4
4×2=8
1×2=2
6×2=12(1+2=3)
5×2=10(1+0=1)
8×2=16(1+6=7)
4×2=8
ステップ 1 の 1 桁の数字をすべて足す 4 + 4 +8 + 2 +3 + 1 + 7 + 8 = 37
カード番号の奇数桁を右から左にすべて足す
5 + 6 + 0 + 8 + 0 + 7 + 8 + 3 = 37
ステップ 2 とステップ 3 の結果の合計 37 + 37 = 74
step の結果が 10 で割り切れる場合、カード番号は有効です。それ以外の場合は無効です。たとえば、番号 4388576018402625 は無効ですが、番号 4388576018410707 は有効な Visa カードです。番号 6011000593748745 は無効ですが、番号 6011000593748746 は有効な Discover カードです。
次のコードに示すように解決しようとしました。
私の質問は、長い番号を使用する代わりに、配列を使用してクレジット カード番号を格納する方法です。
python - Python で IMEI を生成する
こんにちは、有効な IMEI 番号を生成するために Python で関数を作成しようとしています。これが私の関数です。IMEI 検証は Luhn アルゴリズムを使用するため、スクリプトに実装しようとしています。
ただし、関数は有効な IMEI 番号を生成できません。チェック ディジットを生成する方法を説明しているウィキペディアの記事を見つけました ( http://en.wikipedia.org/wiki/Luhn_algorithm )
チェック ディジット (x) は、数字の合計を計算し、その値をモジュロ 10 で 9 倍して計算することによって得られます (式の形式では、(67 * 9 mod 10))。アルゴリズムの形式: 1.数字の合計 (67) を計算します。2. 9 (603) を掛けます。3. 最後の桁の 3 はチェック ディジットです。
何かが足りないのでしょうか、それとも wiki が間違っていますか?
python - ルーン式の実装
PythonでLuhn Formulaを実装しようとしていました。これが私のコードです:
しかし、それは正しく機能していません:
等々...
しかし、コードのロジックは私には問題ないようです。私はこのワークフローに従いました:
ルーンの公式
番号の最後の桁を削除します。確認したいのは下の桁 数字を逆にする
奇数桁 (1、3、5 など) の数字に 2 を掛けて、9 より大きいすべての結果に 9 を引きます。
すべての数字を足し合わせる
チェック ディジット (カードの最後の数字) は、10 の倍数 (モジュロ 10) を取得するために追加する必要がある金額です。
c - 文字列配列を使用して整数の 1、10、100 の列を呼び出す
次のように、配列の位置 0 に 1 の列、位置 1 に 10 の列、位置 2 に 100 の列を持つ long long 整数を文字列配列に変換しようとしています。
入力: 4444555566667777 -----> 出力: [4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7]
コードをテストするために、最後の行にprintf("%d\n",number_str[3]). プログラムが位置 4 の値「7」を出力することを期待していました。代わりに、「52」を出力します。最後の行を変更するprintf("%d\n",number_str[4])と、予想どおり、「6」ではなく「53」になります。誰が何が起こっているのか説明できますか?
確かに 52 と 53 は ASCII 値に対応しますが、どうすれば整数に変換できますか? これをインラインで行うことはできますか?
プログラムのこの部分で私が目指しているのは、10、1,000、100,000、10,000,000 の列のすべての数値を合計することです。基数 10 のクレジット カード番号の 1 桁おき。これは、Luhn 検証の試みの 1 つのステップです。
c# - c# を使用して luhn アルゴリズムを実装する
次のコードを使用して、クレジット カード チェック用の Luhn アルゴリズムを C# 言語で実装していますが、有効性を示すチェック サムを生成するための出力を取得できませんでした。