当前位置: 首页 > 编程语言 > C#

如何对整数的每一位求和?分享

时间:2023-04-10 16:19:23 C#

一个整数的各个位如何求和?我有一个整数值(例如:723),我想把这个整数中的所有值相加,直到得到一个值。例如:7+2+3=121+2=3我是C#新手。请给我一个很好的答案解释:)inti=723;积分;做{acc=0;while(i>0){acc+=i%10;我/=10;}我=acc;}while(acc>=10);%10每次都给出最后一个数字,所以我们将它添加到累加器中。/=10执行整数除法,基本上每次都删除最后一位。然后我们重复,直到我们有足够小的数字。虽然您的取最低数字并除以10的解决方案是正确的并且清楚地实现了所需的功能,但如果您知道诀窍,则可以用更少的代码完成此任务。如果按照描述对数字求和,直到得到一个数字,则将原始数字除以9即可得到余数。试试看。789-->7+8+9=24-->2+4-->6,而789=87*9+6所以如果x是正整数,那么简单地做x%9就可以解决问题。如果得到零,则实际结果为九,否则得到重复的数字和。这个技巧引出了一种检查算术的方法,称为“掷出9”。假设你有一个金额,你想检查它是否正确:3147+5926----9063是否正确?在每一行上做你的把戏:3147-->3+1+4+7=15-->1+5=6+5926-->5+9+2+6=22-->2+2=4----9063-->9+0+6+3=18-->1+8=9现在做求和技巧。6+4=10-->1+0=1如果你做原始数学运算,两个校验和应该相等,但它们不是,第一个是1,第二个是9。当然,还有一个十位数错误。正确的和是3147-->3+1+4+7=15-->1+5=6+5926-->5+9+2+6=22-->2+2=4-->-9073-->9+0+7+3=19-->1+9=10-->1+0=1现在校验和是一样的。6+4=10-->1+0=1它被称为“扔九”,因为你可以忽略总和中的任何九,因为它们没有任何区别:9123-->9+1+2+3=15-->1+5=6,与1+2+3相同。您可以“丢弃”这九个,但仍会得到相同的结果。现在,你能证明数字之和除以9的余数吗?你能证明九点之和是投的吗?你能推断并证明一个类似的检查错误产品的规则吗?下面剧透让我们定义一个关系x≡c,意思是“x和c是非负整数,存在一个非负整数n使得x=9n+c”。也就是说,x和c是“全等模九”。知道了?先证明:若x≡c且y≡d则x+y≡c+d。这很简单。根据这个关系的定义,存在非负整数m和n使得x=9n+c和y=9m+d。我们必须证明存在一个非负整数p使得x+y=9p+c+d。整数p显然是m+n。因为有这样的整数,所以这个关系成立。第二件事要证明:如果x≡c和y≡d则xy≡cd。同样,我们必须证明存在一个整数p使得xy=9p+cd。通过第一定理的类似证明,p=9nm+mc+nd有效,因此该关系成立。第三要证明:对于任意非负整数n,10n≡1。用归纳法很容易证明:从这三个定理你现在可以看出a(102)+b(101)+c(100)≡a+b+c所以我们证明了十进制数是“全等数字9”与其数字的总和。现在,我们的第一个证明是“逐出9”充当算术校验和的事实。递归地使用Mod(%):intAddUp(intnumber){if(number<10)returnnumber;返回AddUp(number/10)+number%10;好吧,我想到了一个快速函数intnumber=723;doublesum=number.ToString().Sum(s=>Char.GetNumericValue(s));字符串numString=number.ToString();并使用LINQ计算所有的和以上是C#学习教程:如何对数字求和?如果分享的内容对你有用,需要进一步了解C#学习教程,希望你多多关注——double[]allSums=Enumerable.Range(1,numString.Length).Select(i=>numString.Substring(0,i).Sum(s=>Char.GetNumericValue(s))).ToArray();int=723;如果(a%9==0){结果=9;}elseif(a%9!=0){结果=a%9;}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: