给定数字的数字和的程序

给定一个数字,求其数字之和。

null

例如:

Input : n = 687
Output : 21

Input : n = 12
Output : 3

给定数字中数字和的通用算法:

  1. 拿到号码
  2. 声明一个变量来存储和,并将其设置为0
  3. 重复接下来的两个步骤,直到数字不为0
  4. 在余数“%”运算符的帮助下,将数字的最右边的数字除以10,然后将其相加。
  5. 在“/”运算符的帮助下,将数字除以10,以删除最右边的数字。
  6. 打印或返回金额

下面是获得数字总和的解决方案。 1.迭代:

C++

// C program to compute sum of digits in
// number.
#include <iostream>
using namespace std;
/* Function to get sum of digits */
class gfg {
public :
int getSum( int n)
{
int sum = 0;
while (n != 0) {
sum = sum + n % 10;
n = n / 10;
}
return sum;
}
};
// Driver code
int main()
{
gfg g;
int n = 687;
cout << g.getSum(n);
return 0;
}
// This code is contributed by Soumik


C

// C program to compute sum of digits in
// number.
#include <stdio.h>
/* Function to get sum of digits */
int getSum( int n)
{
int sum = 0;
while (n != 0) {
sum = sum + n % 10;
n = n / 10;
}
return sum;
}
// Driver code
int main()
{
int n = 687;
printf ( " %d " , getSum(n));
return 0;
}


JAVA

// Java program to compute
// sum of digits in number.
import java.io.*;
class GFG {
/* Function to get sum of digits */
static int getSum( int n)
{
int sum = 0 ;
while (n != 0 ) {
sum = sum + n % 10 ;
n = n / 10 ;
}
return sum;
}
// Driver code
public static void main(String[] args)
{
int n = 687 ;
System.out.println(getSum(n));
}
}
// This code is contributed by Gitanjali


蟒蛇3

# Python 3 program to
# compute sum of digits in
# number.
# Function to get sum of digits
def getSum(n):
sum = 0
while (n ! = 0 ):
sum = sum + int (n % 10 )
n = int (n / 10 )
return sum
# Driver code
n = 687
print (getSum(n))


C#

// C# program to compute
// sum of digits in number.
using System;
class GFG {
/* Function to get sum of digits */
static int getSum( int n)
{
int sum = 0;
while (n != 0) {
sum = sum + n % 10;
n = n / 10;
}
return sum;
}
// Driver code
public static void Main()
{
int n = 687;
Console.Write(getSum(n));
}
}
// This code is contributed by Sam007


PHP

<?php
// PHP Code to compute sum
// of digits in number.
// Function to get
// $sum of digits
function getsum( $n )
{
$sum = 0;
while ( $n != 0)
{
$sum = $sum + $n % 10;
$n = $n /10;
}
return $sum ;
}
// Driver Code
$n = 687;
$res = getsum( $n );
echo ( "$res" );
// This code is contributed by
// Smitha Dinesh Semwal.
?>


Javascript

<script>
// Javascript program to compute sum of digits in
// number.
/* Function to get sum of digits */
function getSum(n)
{
var sum = 0;
while (n != 0) {
sum = sum + n % 10;
n = parseInt(n / 10);
}
return sum;
}
// Driver code
var n = 687;
document.write(getSum(n));
</script>


输出

21

如何计算 单线? 下面的函数有三行,而不是一行,但它计算行中的和。如果我们将指针传递给sum,它可以成为一行函数。

C++

#include <iostream>
using namespace std;
/* Function to get sum of digits */
class gfg {
public :
int getSum( int n)
{
int sum;
/* Single line that calculates sum */
for (sum = 0; n > 0; sum += n % 10, n /= 10)
;
return sum;
}
};
// Driver code
int main()
{
gfg g;
int n = 687;
cout << g.getSum(n);
return 0;
}
// This code is contributed by Soumik


C

#include <stdio.h>
/* Function to get sum of digits */
int getSum( int n)
{
int sum;
/* Single line that calculates sum */
for (sum = 0; n > 0; sum += n % 10, n /= 10)
;
return sum;
}
// Driver code
int main()
{
int n = 687;
printf ( " %d " , getSum(n));
return 0;
}


JAVA

// Java program to compute
// sum of digits in number.
import java.io.*;
class GFG {
/* Function to get sum of digits */
static int getSum( int n)
{
int sum;
/* Single line that calculates sum */
for (sum = 0 ; n > 0 ; sum += n % 10 , n /= 10 )
;
return sum;
}
// Driver code
public static void main(String[] args)
{
int n = 687 ;
System.out.println(getSum(n));
}
}
// This code is contributed by Gitanjali


蟒蛇3

# Function to get sum of digits
def getSum(n):
sum = 0
# Single line that calculates sum
while (n > 0 ):
sum + = int (n % 10 )
n = int (n / 10 )
return sum
# Driver code
n = 687
print (getSum(n))
# This code is contributed by
# Smitha Dinesh Semwal


C#

// C# program to compute
// sum of digits in number.
using System;
class GFG {
static int getSum( int n)
{
int sum;
/* Single line that calculates sum */
for (sum = 0; n > 0; sum += n % 10, n /= 10)
;
return sum;
}
// Driver code
public static void Main()
{
int n = 687;
Console.Write(getSum(n));
}
}
// This code is contributed by Sam007


PHP

<?php
// PHP Code for Sum the
// digits of a given number
// Function to get sum of digits
function getsum( $n )
{
// Single line that calculates $sum
for ( $sum = 0; $n > 0; $sum += $n % 10,
$n /= 10);
return $sum ;
}
// Driver Code
$n = 687;
echo (getsum( $n ));
// This code is contributed by
// Smitha Dinesh Semwal.
?>


Javascript

<script>
// Javascript program to compute
// sum of digits in number.
// Function to get sum of digits
function getSum(n)
{
let sum;
// Single line that calculates sum
for (sum = 0; n > 0;
sum += n % 10,
n = parseInt(n / 10))
;
return sum;
}
// Driver code
let n = 687;
document.write(getSum(n));
// This code is contributed by subhammahato348
</script>


输出

21

2.递归 感谢Ayesha提供以下递归解决方案。

算法:

1) Get the number
2) Get the remainder and pass the next remaining digits
3) Get the rightmost digit of the number with help of the remainder '%' operator by dividing it by 10 and add it to sum.
   Divide the number by 10 with help of '/' operator to remove the rightmost digit.
4) Check the base case with n = 0
5) Print or return the sum

C++

// C++ program to compute
// sum of digits in number.
#include <iostream>
using namespace std;
class gfg {
public :
int sumDigits( int no)
{
if (no == 0){
return 0 ;
}
return (no % 10) + sumDigits(no / 10) ;
}
};
// Driver code
int main( void )
{
gfg g;
cout << g.sumDigits(687);
return 0;
}


C

// C program to compute
// sum of digits in number.
#include <stdio.h>
int sumDigits( int no)
{
if (no == 0){
return 0 ;
}
return (no % 10) + sumDigits(no / 10) ;
}
int main()
{
printf ( "%d" , sumDigits(687));
return 0;
}


JAVA

// Java program to compute
// sum of digits in number.
import java.io.*;
class GFG {
/* Function to get sum of digits */
static int sumDigits( int no)
{
if (no == 0 ){
return 0 ;
}
return (no % 10 ) + sumDigits(no / 10 ) ;
}
// Driver code
public static void main(String[] args)
{
System.out.println(sumDigits( 687 ));
}
}
// This code is contributed by Gitanjali


蟒蛇3

# Python program to compute
# sum of digits in number.
def sumDigits(no):
return 0 if no = = 0 else int (no % 10 ) + sumDigits( int (no / 10 ))
# Driver code
print (sumDigits( 687 ))
# This code is contributed by
# Smitha Dinesh Semwal


C#

// C# program to compute
// sum of digits in number.
using System;
class GFG {
/* Function to get sum of digits */
static int sumDigits( int no)
{
return no == 0 ? 0 : no % 10 + sumDigits(no / 10);
}
// Driver code
public static void Main()
{
Console.Write(sumDigits(687));
}
}
// This code is contributed by Sam007


PHP

<?php
// PHP program to compute
// sum of digits in number.
function sumDigits( $no )
{
return $no == 0 ? 0 : $no % 10 +
sumDigits( $no / 10) ;
}
// Driver Code
echo sumDigits(687);
// This code is contributed by aj_36
?>


Javascript

<script>
// Program to compute
// sum of digits in number
// Function to get sum of digits
function sumDigits(no)
{
if (no == 0){
return 0 ;
}
return (no % 10) + sumDigits(parseInt(no/10)) ;
}
// Driver code
document.write(sumDigits(687));
// This is code is contributed by simranarora5sos
</script>


输出

21

3.将输入作为字符串

当该数字的位数超过10时 19 ,我们不能将该数字作为整数,因为long int的范围不满足给定的数字。因此,将输入作为字符串,从开始到字符串长度运行一个循环,并使用该字符增加总和(在本例中为数字)

下面是上述方法的实现

C++14

// C++ implementation of the above approach
#include <iostream>
using namespace std;
int getSum(string str)
{
int sum = 0;
// Traversing through the string
for ( int i = 0; i < str.length(); i++) {
// Since ascii value of
// numbers starts from 48
// so we subtract it from sum
sum = sum + str[i] - 48;
}
return sum;
}
// Driver Code
int main()
{
string st = "123456789123456789123422" ;
cout << getSum(st);
return 0;
}


JAVA

// Java implementation of the above approach
import java.io.*;
class GFG {
static int getSum(String str)
{
int sum = 0 ;
// Traversing through the string
for ( int i = 0 ; i < str.length(); i++) {
// Since ascii value of
// numbers starts from 48
// so we subtract it from sum
sum = sum + str.charAt(i) - 48 ;
}
return sum;
}
// Driver Code
public static void main(String[] args)
{
String st = "123456789123456789123422" ;
System.out.print(getSum(st));
}
}
// This code is contributed by Dharanendra L V.


蟒蛇3

# Python implementation of the above approach
def getSum(n):
# Initializing sum to 0
sum = 0
# Traversing through string
for i in n:
# Converting char to int
sum = sum + int (i)
return sum
n = "123456789123456789123422"
print (getSum(n))


C#

// C# implementation of the above approach
using System;
public class GFG {
static int getSum(String str)
{
int sum = 0;
// Traversing through the string
for ( int i = 0; i < str.Length; i++) {
// Since ascii value of
// numbers starts from 48
// so we subtract it from sum
sum = sum + str[i] - 48;
}
return sum;
}
// Driver Code
static public void Main()
{
String st = "123456789123456789123422" ;
Console.Write(getSum(st));
}
}
// This code is contributed by Dharanendra L V.


Javascript

<script>
// Javascript implementation of the above approach
function getSum(str)
{
let sum = 0;
// Traversing through the string
for (let i = 0; i < str.length; i++)
{
// Since ascii value of
// numbers starts from 48
// so we subtract it from sum
sum = sum + parseInt(str[i]);
}
return sum;
}
// Driver Code
let st = "123456789123456789123422" ;
document.write(getSum(st));
// This code is contributed by subhammahato348.
</script>


输出

104

4. 使用尾部递归

这个问题也可以通过尾部递归来解决。这里有一个解决方法。

1.向函数中添加另一个变量“Val”,并将其初始化为(Val=0)

2.每次调用函数时,将mod值(n%10)作为“(n%10)+val”添加到变量中,这是n中的最后一位数字。同时将变量n作为n/10传递。

3.所以在第一次通话时,它会有最后一个数字。当我们将n/10作为n传递时,它会一直跟随,直到n减少到一个位数。

4.n<10是基本情况,因此当n<10时,将n添加到变量中,因为它是最后一个数字,并返回具有数字总和的val

C++

// C++ program for the above approach
#include <iostream>
using namespace std;
// Function to check sum
// of digit using tail recursion
int sum_of_digit( int n, int val)
{
if (n < 10)
{
val = val + n;
return val;
}
return sum_of_digit(n / 10, (n % 10) + val);
}
// Driver code
int main()
{
int num = 12345;
int result = sum_of_digit(num, 0);
cout << "Sum of digits is " << result;
return 0;
}
// This code is contributed by subhammahato348


JAVA

// Java program for the above approach
import java.io.*;
import java.lang.*;
import java.util.*;
class sum_of_digits {
// Function to check sum
// of digit using tail recursion
static int sum_of_digit( int n, int val)
{
if (n < 10 ) {
val = val + n;
return val;
}
return sum_of_digit(n / 10 , (n % 10 ) + val);
}
// Driven Program to check above
public static void main(String args[])
{
int num = 12345 ;
int result = sum_of_digit(num, 0 );
System.out.println( "Sum of digits is " + result);
}
}


蟒蛇3

# Python3 program for the above approach
# Function to check sum
# of digit using tail recursion
def sum_of_digit(n, val):
if (n < 10 ):
val = val + n
return val
return sum_of_digit(n / / 10 , (n % 10 ) + val)
# Driver code
num = 12345
result = sum_of_digit(num, 0 )
print ( "Sum of digits is" , result)
# This code is contributed by subhammahato348


C#

// C# program for the above approach
using System;
class GFG{
// Function to check sum
// of digit using tail recursion
static int sum_of_digit( int n, int val)
{
if (n < 10)
{
val = val + n;
return val;
}
return sum_of_digit(n / 10, (n % 10) + val);
}
// Driver code
public static void Main()
{
int num = 12345;
int result = sum_of_digit(num, 0);
Console.Write( "Sum of digits is " + result);
}
}
// This code is contributed by subhammahato348


Javascript

<script>
// Javascript program for the above approach
// Function to check sum
// of digit using tail recursion
function sum_of_digit(n, val)
{
if (n < 10)
{
val = val + n;
return val;
}
return sum_of_digit(parseInt(n / 10),
(n % 10) + val);
}
// Driver code
let num = 12345;
let result = sum_of_digit(num, 0);
document.write( "Sum of digits is " + result);
// This code is contributed by subhammahato348
</script>


输出

Sum of digits is 15

如果您发现上述代码/算法不正确,请写下评论,或者找到更好的方法来解决相同的问题。

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享