কম্পিউটার

ক্রেডিট কার্ড নম্বর যাচাইকরণের জন্য জাভা প্রোগ্রাম


ক্রেডিট কার্ড নম্বরের সংখ্যা সম্বলিত একটি দীর্ঘ নম্বর দেওয়া; কাজটি হল ক্রেডিট কার্ড নম্বরটি বৈধ কি না তা একটি প্রোগ্রামের সাথে খুঁজে বের করা।

একটি ক্রেডিট কার্ড বৈধ কি না তা পরীক্ষা করার জন্য, ফলাফল ঘোষণা করার জন্য আমাদের নিশ্চিত হতে নিম্নলিখিত বৈধতাগুলি রয়েছে৷

একটি ক্রেডিট কার্ডের নম্বরে 13 থেকে 16 সংখ্যা থাকতে হবে, এটি অবশ্যই নিম্নলিখিত সংখ্যাগুলি দিয়ে শুরু হবে৷

  • সমস্ত ভিসা কার্ড 4 থেকে শুরু হয়
  • সমস্ত মাস্টার কার্ড 5 থেকে শুরু হয়
  • 37 হল আমেরিকান এক্সপ্রেস কার্ডের সূচনা
  • সকল আবিষ্কার কার্ড 6 থেকে শুরু হয়

ক্রেডিট কার্ড বৈধ কি না তা পরীক্ষা করার পদক্ষেপগুলি -

ধাপ 1 − ডান থেকে বাম থেকে শুরু করে আমাদের প্রতিটি অঙ্ককে দ্বিগুণ করতে হবে, যদি সংখ্যাটি দ্বিগুণ করার ফলাফলটি এক অঙ্ক হয় তবে এটিকে যেমন আছে তেমনই রেখে দিন, অন্যথায় একটি সংখ্যার নম্বর পেতে দুটি সংখ্যা যোগ করুন। (যেমন 22 =2+2=4)

ধাপ 2 − কার্ড নম্বরের ডান থেকে বামে শুরু করে বিজোড় জায়গায় সমস্ত সংখ্যা যোগ করুন।

ধাপ 3 − ধাপ 1 থেকে প্রাপ্ত সমস্ত একক সংখ্যার নম্বর যোগ করুন।

পদক্ষেপ 4৷ − ধাপ 2 এবং ধাপ 3 থেকে ফলাফল যোগ করুন।

ধাপ 5 − যদি ফলাফলটি 10 ​​দ্বারা বিভাজ্য হয় তবে কার্ড নম্বরটি বৈধ অন্যথায় সংখ্যাটি বৈধ নয়৷

উদাহরণ

Input: n = 4440967484181607
Output: 4440967484181607 is valid

Input: n = 379354508162306
Output: 379354508162306 is valid

সমস্যা সমাধানের জন্য আমরা যে পদ্ধতি ব্যবহার করছি৷ −

আমরা 4440967484181607 ডিজিটের জন্য Luhn চেক বা মোড 10 চেক ব্যবহার করব।

অ্যালগরিদম

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

  1. গণনা সাজানোর জন্য জাভা প্রোগ্রাম

  2. ককটেল সাজানোর জন্য জাভা প্রোগ্রাম

  3. জাভা প্রোগ্রাম প্রাইম চেক করতে এবং জাভাতে পরবর্তী প্রাইম খুঁজে পেতে

  4. ক্রেডিট কার্ড নম্বর যাচাই করার জন্য পাইথন প্রোগ্রাম বৈধ কি না