クレジットカード番号検証用のJavaプログラム
クレジットカード番号の数字を含む長い数字が与えられた場合;タスクは、プログラムでクレジットカード番号が有効かどうかを確認することです。
クレジットカードが有効かどうかを確認するために、結果を宣言するために確認する必要がある検証は次のとおりです。
クレジットカードの番号は13〜16桁で、次の桁で始まる必要があります。
- すべてのビザカードは4から始まります
- すべてのマスターカードは5から始まります
- 37はアメリカンエキスプレスカードの始まりです
- すべてのディスカバーカードは6から始まります
クレジットカードが有効かどうかを確認する手順-
ステップ1 −右から左に向かって、各桁を2倍にする必要があります。数値を2倍にした結果が1桁の場合はそのままにし、それ以外の場合は2桁を合計して1桁の数値を取得します。 (22 =2 + 2 =4のように)
ステップ2 −カード番号の右から左に向かって、奇数の場所にすべての数字を追加します。
ステップ3 −手順1で取得した1桁の数字をすべて追加します。
ステップ4 −ステップ2とステップ3の結果を合計します。
ステップ5 −結果が10で割り切れる場合、カード番号は有効です。それ以外の場合、番号は無効です。
例
Input: n = 4440967484181607 Output: 4440967484181607 is valid Input: n = 379354508162306 Output: 379354508162306 is valid
問題を解決するために使用しているアプローチ −
数字4440967484181607には、Luhnチェックまたはmod10チェックを使用します。
アルゴリズム
Start Step1-> In function void main(String[] args) Declare and initialize cnumber = 4440967484181607L Call function validitychk Print the result Step 2-> In function boolean validitychk(long cnumber) Return thesize(cnumber) >= 13 && thesize(cnumber) <= 16) && (prefixmatch(cnumber, 4) || prefixmatch(cnumber, 5) || prefixmatch(cnumber, 37) || prefixmatch(cnumber, 6)) && ((sumdoubleeven(cnumber) + sumodd(cnumber)) % 10 == 0 Step 3-> In function int sumdoubleeven(long cnumber) Declare and set sum = 0 Declare and set num = cnumber + "" Loop For i = thesize(cnumber) – 2 and i >= 0 and i -= 2 Set sum = sum + getDigit(Integer.parseInt(num.charAt(i) + "") * 2) Return sum Step 4-> In function int getDigit(int cnumber) if cnumber < 9 then, Return cnumber Return cnumber / 10 + cnumber % 10 Step 5-> In function int sumodd(long cnumber) Set sum = 0 Set num = cnumber + "" Loop For i = thesize(cnumber) – 1 and i >= 0 and i -= 2 Set sum = sum + Integer.parseInt(num.charAt(i) + "") Return sum Step 6-> In function boolean prefixmatch(long cnumber, int d) Return getprefx(cnumber, thesize(d)) == d Step 7-> In function int thesize(long d) Set num = d + "" Return num.length() Step8-> In function long getprefx(long cnumber, int k) If thesize(cnumber) > k then, Set num = cnumber + "" Return Long.parseLong(num.substring(0, k)) Return cnumber Stop
例
import java.util.Scanner; public class Main { // Main Method public static void main(String[] args) { long cnumber = 4440967484181607L; System.out.println(cnumber + " is " + (validitychk(cnumber) ? "valid" : "invalid")); } // Return true if the card number is valid public static boolean validitychk(long cnumber) { return (thesize(cnumber) >= 13 && thesize(cnumber) <= 16) && (prefixmatch(cnumber, 4) || prefixmatch(cnumber, 5) || prefixmatch(cnumber, 37) || prefixmatch(cnumber, 6)) && ((sumdoubleeven(cnumber) + sumodd(cnumber)) % 10 == 0); } // Get the result from Step 2 public static int sumdoubleeven(long cnumber) { int sum = 0; String num = cnumber + ""; for (int i = thesize(cnumber) - 2; i >= 0; i -= 2) sum += getDigit(Integer.parseInt(num.charAt(i) + "") * 2); return sum; } // Return this cnumber if it is a single digit, otherwise, // return the sum of the two digits public static int getDigit(int cnumber) { if (cnumber < 9) return cnumber; return cnumber / 10 + cnumber % 10; } // Return sum of odd-place digits in cnumber public static int sumodd(long cnumber) { int sum = 0; String num = cnumber + ""; for (int i = thesize(cnumber) - 1; i >= 0; i -= 2) sum += Integer.parseInt(num.charAt(i) + ""); return sum; } // Return true if the digit d is a prefix for cnumber public static boolean prefixmatch(long cnumber, int d) { return getprefx(cnumber, thesize(d)) == d; } // Return the number of digits in d public static int thesize(long d) { String num = d + ""; return num.length(); } // Return the first k number of digits from // number. If the number of digits in number // is less than k, return number. public static long getprefx(long cnumber, int k) { if (thesize(cnumber) > k) { String num = cnumber + ""; return Long.parseLong(num.substring(0, k)); } return cnumber; } }
出力
4440967484181607 is valid
-
プライムをチェックし、Javaで次のプライムを見つけるJavaプログラム
1より大きく、1とその数自体の2つの要素しかない整数は、素数と呼ばれます。これらの2つの数値を除いて、正の約数はありません。例:7=1×7 以下は、数が素数であるかどうかを見つけるためのアルゴリズムです- 整数変数Aを取ります。 変数Aを(A-1から2)で除算します。 Aが任意の値(A-1から2)で割り切れる場合、素数ではありません。 それ以外の場合は素数です。 例 次のJavaプログラムは、ユーザーから整数を受け取り、指定された数が素数であるかどうかを調べ、次の素数を出力します。 import java.util.Scanner; public class N
-
クレジットカード番号をチェックするPythonプログラムが有効かどうか
クレジットカード番号があるとします。カード番号が有効かどうかを確認する必要があります。カード番号には特定のプロパティがあります- 4、5、6から始まります 16桁の長さになります 数字には数字のみを含める必要があります -で区切られた4つのグループの数字が含まれる場合があります スペースやアンダースコアなどの他の区切り文字は使用しないでください 同じ数字が4桁以上連続していてはいけません したがって、入力がs =5423-2578-8632-6589のような場合、出力はTrueになります これを解決するには、次の手順に従います- sの-の数が0より