给定整数N ,任务是检查给定数字的数字总和是否可被其所有数字整除。如果可分割,则打印“是”,否则打印“否” 。
例子:
Input: N = 12
Output: No
Sum of digits = 1 + 2 = 3
3 is divisible by 1 but not 2.
Input: N = 123
Output: Yes
方法:首先找到该数字的总和,然后一一检查,以计算出的总和是否可被该数字的所有数字整除。如果某位数字不能被整除,则打印“否”,否则打印“是” 。
下面是上述方法的实现:
C++
// C++ implementation of the approach
#include
using namespace std;
// Function that returns true if all the digits
// of n divide the sum of the digits of n
bool isDivisible(long long int n)
{
// Store a copy of the original number
long long int temp = n;
// Find the sum of the digits of n
int sum = 0;
while (n) {
int digit = n % 10;
sum += digit;
n /= 10;
}
// Restore the original value
n = temp;
// Check if all the digits divide
// the calculated sum
while (n) {
int digit = n % 10;
// If current digit doesn't
// divide the sum
if (sum % digit != 0)
return false;
n /= 10;
}
return true;
}
// Driver code
int main()
{
long long int n = 123;
if (isDivisible(n))
cout << "Yes";
else
cout << "No";
return 0;
}
Java
// Java implementation of the approach
class GFG
{
// Function that returns true if all the digits
// of n divide the sum of the digits of n
static boolean isDivisible(long n)
{
// Store a copy of the original number
long temp = n;
// Find the sum of the digits of n
int sum = 0;
while (n != 0)
{
int digit = (int) n % 10;
sum += digit;
n /= 10;
}
// Restore the original value
n = temp;
// Check if all the digits divide
// the calculated sum
while (n != 0)
{
int digit = (int)n % 10;
// If current digit doesn't
// divide the sum
if (sum % digit != 0)
return false;
n /= 10;
}
return true;
}
// Driver code
public static void main (String[] args)
{
long n = 123;
if (isDivisible(n))
System.out.println("Yes");
else
System.out.println("No");
}
}
// This code is contributed by AnkitRai01
Python
# Python implementation of the approach
# Function that returns true if all the digits
# of n divide the sum of the digits of n
def isDivisible(n):
# Store a copy of the original number
temp = n
# Find the sum of the digits of n
sum = 0
while (n):
digit = n % 10
sum += digit
n //= 10
# Restore the original value
n = temp
# Check if all the digits divide
# the calculated sum
while(n):
digit = n % 10
# If current digit doesn't
# divide the sum
if(sum % digit != 0):
return False
n //= 10;
return True
# Driver code
n = 123
if(isDivisible(n)):
print("Yes")
else:
print("No")
C#
// C# implementation of the approach
using System;
class GFG
{
// Function that returns true if all the digits
// of n divide the sum of the digits of n
static bool isDivisible(long n)
{
// Store a copy of the original number
long temp = n;
// Find the sum of the digits of n
int sum = 0;
while (n != 0)
{
int digit = (int) n % 10;
sum += digit;
n /= 10;
}
// Restore the original value
n = temp;
// Check if all the digits divide
// the calculated sum
while (n != 0)
{
int digit = (int)n % 10;
// If current digit doesn't
// divide the sum
if (sum % digit != 0)
return false;
n /= 10;
}
return true;
}
// Driver code
static public void Main ()
{
long n = 123;
if (isDivisible(n))
Console.Write("Yes");
else
Console.Write("No");
}
}
// This code is contributed by @tushil.
Python3
# Python implementation of above approach
def getResult(n):
# Converting integer to string
st = str(n)
# Initialising sum to 0
sum = 0
length = len(st)
# Traversing through the string
for i in st:
# Converting character to int
sum = sum + int(i)
# Comparing number and sum
# Traversing again
for i in st:
# Check if any digit is
# not dividing the sum
if(sum % int(i) != 0):
# Return false
return 'No'
# If any value is not returned
# then all the digits are dividing the sum
# SO return true
return 'Yes'
# Driver Code
n = 123
# passing this number to get result function
print(getResult(n))
# this code is contributed by vikkycirus
输出
Yes
时间复杂度: O(log(N))
辅助空间: O(1)
方法2:使用字符串:
- 我们必须通过采用新变量将给定的数字转换为字符串。
- 遍历字符串,将每个元素转换为整数并将其加和。
- 再次遍历字符串
- 检查总和是否不能被任何一位数字整除
- 如果为true,则返回False
- 否则返回True
下面是上述方法的实现:
Python3
# Python implementation of above approach
def getResult(n):
# Converting integer to string
st = str(n)
# Initialising sum to 0
sum = 0
length = len(st)
# Traversing through the string
for i in st:
# Converting character to int
sum = sum + int(i)
# Comparing number and sum
# Traversing again
for i in st:
# Check if any digit is
# not dividing the sum
if(sum % int(i) != 0):
# Return false
return 'No'
# If any value is not returned
# then all the digits are dividing the sum
# SO return true
return 'Yes'
# Driver Code
n = 123
# passing this number to get result function
print(getResult(n))
# this code is contributed by vikkycirus
输出
Yes