gpt4 book ai didi

c# - 以编程方式求解模方程

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:24:51 24 4
gpt4 key购买 nike

我的目标是实现一个(简单的)校验位算法,如 Here 所述

我的实现如下,但我不确定它是否是最佳的:

 private int CheckDigit(string SevenDecimal)
{
///Get UPC check digit of a 7-digit URI
///Add odd and multiply by 3 =Odds
///Add even =Evens
///Add Odds+Evens=sum
///Check digit is the number that makes Sum divisble by 10
int Odds = 0;
int Evens = 0;
int sum = 0;
int index = 0;
foreach (char digit in SevenDecimal)
{
index++;
int Digit = int.Parse(digit.ToString());

if (index % 2 == 0)
{
Evens +=Digit;
}
else
{
Odds +=Digit;
}
}
Odds = Odds * 3;
sum = Odds + Evens;


for (int i = 0; i < 10; i++) ///Brute force way check for better implementation
{
int Localsum;
Localsum = sum + i;
if (Localsum % 10 == 0)
{
return i;
}
}
return -1;//error;
}

我主要关心的是最后的 for 循环,正如我所描述的那样,它完全是粗鲁的。有没有更好的方法获取校验位?

更准确地说,这是以编程方式解决方程式的最佳方法:

(sum+x)%10=0  //solve for x

最佳答案

要计算“您必须添加多少 i 才能使数字的最后一位数字为 0”,您可以从 10 中减去:

int checkDigit = (10 - (sum % 10)) % 10;

第二个模用于 sum % 10 == 0 的特殊情况,因为 10 - 0 = 10

关于c# - 以编程方式求解模方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27292584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com