카테고리 없음

[C ++] C ++의 luhn 알고리즘 및 '숫자 조작'

행복을전해요 2021. 1. 15. 17:47

모듈 식 산술을 사용하여 다음과 같은 방정식을 간단하게 만듭니다.

checkdigit = (sum_digits*9)%10
           = ((sum_digits)%10*9)%10
           

이제 sum_digits%10문자열을 사용하여 평가하는 것은 매우 간단합니다.

C ++ 구현 :-

#include<iostream>
using namespace std;

int main() {

  char* str = new char[100];
    cout<<"Enter the String: ";
      cin>>str;
      
        int val = 0;
        
          for(int i=0;str[i]!=0;i++) {
          
                  val = (val+str[i]-'0')%10;   
                  
                    }
                    
                      val = (val*9)%10;
                      
                        cout<<"Checkdigit("<<str<<") = "<<val;
                          return 0;
                          }
                          
-------------------

Stringstream은 모든 숫자를 계산 한 다음 '0'을 추가하여 각 숫자를 문자로 변환해야합니다. 숫자 값을 다시 얻으려면 '0'을 다시 빼야합니다. 모듈로 접근 방식을 직접 사용하는 것이 좋습니다.



출처
https://stackoverflow.com/questions/22006836