بررسی بخش پذیری بر ۷ — به زبان ساده
در این مطلب، به روش نوشتن برنامهای که بخشپذیری بر ۷ را بررسی میکند، پرداخته شده است. فرض میشود یک عدد n داده شده است. هدف بررسی این موضوع است که آیا عدد مذکور، بر ۷ بخشپذیر است یا خیر. فرض نیز بر این است که گفته شده از «عملگر پیمانهای» (Modulo Operator) و «ممیز شناور» (Floating Point Arithmetic) برای انجام این محاسبات استفاده نشود. یک راهکار ساده، تفریق تکرار شونده است. در ادامه، راهکار بهتری برای انجام این کار بیان خواهد شد.
بخش پذیری بر ۷ را میتوان با استفاده از یک متد بازگشتی محاسبه کرد. یک عدد به فرم ۱۰a + b بر هفت بخشپذیر است اگر و تنها اگر، ۲b بر هفت بخشپذیر باشد. به بیان دیگر، آخرین رقم را دو بار از عدد شکل گرفته با ارقام باقیمانده باید کم کرد. این کار تا هنگام رسیدن به یک عدد کوچک، باید ادامه پیدا کند.
مثال: اعداد زیر داده شدهاند.
۳۷۱: ۳۷ – (۲×۱) = ۳۷ – ۲ = ۳۵;
۳ – (۲ × ۵) = ۳ – ۱۰ = -۷
بنابراین، با توجه به اینکه ۷- بر ۷ بخشپذیر است، ۳۷۱ نیز بر ۷ بخشپذیر است. در ادامه، روش بالا در زبانهای برنامهنویسی گوناگون شامل ++C ،C، «جاوا» (Java)، «پایتون» (Python)، «سی شارپ» (#C) و «پی اچ پی» (PHP) پیادهسازی شده است.
برنامه بررسی بخش پذیری بر ۷ در ++C
// A Program to check whether a number is divisible by 7
#include <bits/stdc++.h>
using namespace std;
int isDivisibleBy7( int num )
{
// If number is negative, make it positive
if( num < 0 )
return isDivisibleBy7( -num );
// Base cases
if( num == 0 || num == 7 )
return 1;
if( num < 10 )
return 0;
// Recur for ( num / 10 - 2 * num % 10 )
return isDivisibleBy7( num / 10 - 2 *
( num - num / 10 * 10 ) );
}
// Driver code
int main()
{
int num = 616;
if( isDivisibleBy7(num ) )
cout << "Divisible" ;
else
cout << "Not Divisible" ;
return 0;
}
// This code is contributed by rathbhupendra
برنامه بررسی بخش پذیری بر ۷ در C
// A Program to check whether a number is divisible by 7
#include <stdio.h>
int isDivisibleBy7( int num )
{
// If number is negative, make it positive
if( num < 0 )
return isDivisibleBy7( -num );
// Base cases
if( num == 0 || num == 7 )
return 1;
if( num < 10 )
return 0;
// Recur for ( num / 10 - 2 * num % 10 )
return isDivisibleBy7( num / 10 - 2 * ( num - num / 10 * 10 ) );
}
// Driver program to test above function
int main()
{
int num = 616;
if( isDivisibleBy7(num ) )
printf( "Divisible" );
else
printf( "Not Divisible" );
return 0;
}
برنامه بررسی بخش پذیری بر ۷ در جاوا
// Java program to check whether a number is divisible by 7
import java.io.*;
class GFG
{
// Function to check whether a number is divisible by 7
static boolean isDivisibleBy7(int num)
{
// If number is negative, make it positive
if( num < 0 )
return isDivisibleBy7( -num );
// Base cases
if( num == 0 || num == 7 )
return true;
if( num < 10 )
return false;
// Recur for ( num / 10 - 2 * num % 10 )
return isDivisibleBy7( num / 10 - 2 * ( num - num / 10 * 10 ) );
}
// Driver program
public static void main (String[] args)
{
int num = 616;
if(isDivisibleBy7(num))
System.out.println("Divisible");
else
System.out.println("Not Divisible");
}
}
// Contributed by Pramod Kumar
برنامه بررسی بخش پذیری بر ۷ در پایتون
# Python program to check whether a number is divisible by 7
# Function to check whether a number is divisible by 7
def isDivisibleBy7(num) :
# If number is negative, make it positive
if num < 0 :
return isDivisibleBy7( -num )
# Base cases
if( num == 0 or num == 7 ) :
return True
if( num < 10 ) :
return False
# Recur for ( num / 10 - 2 * num % 10 )
return isDivisibleBy7( num / 10 - 2 * ( num - num / 10 * 10 ) )
# Driver program
num = 616
if(isDivisibleBy7(num)) :
print "Divisible"
else :
print "Not Divisible"
# This code is contributed by Nikita Tiwari
برنامه بررسی بخش پذیری بر ۷ در #C
// C# program to check whether a
// number is divisible by 7
using System;
class GFG {
// Function to check whether a
// number is divisible by 7
static bool isDivisibleBy7(int num)
{
// If number is negative,
// make it positive
if( num < 0 )
return isDivisibleBy7(-num);
// Base cases
if( num == 0 || num == 7 )
return true;
if( num < 10 )
return false;
// Recur for ( num / 10 - 2 * num % 10 )
return isDivisibleBy7(num / 10 - 2 *
( num - num / 10 * 10 ));
}
// Driver Code
public static void Main ()
{
int num = 616;
if(isDivisibleBy7(num))
Console.Write("Divisible");
else
Console.Write("Not Divisible");
}
}
// This code is contributed by Nitin Mittal.
برنامه بررسی بخش پذیری بر ۷ در PHP
<?php
// PHP Program to check whether
// a number is divisible by 7
// Function to check whether a
// number is divisible by 7
function isDivisibleBy7( $num )
{
// If number is negative,
// make it positive
if( $num < 0 )
return isDivisibleBy7( -$num );
// Base cases
if( $num == 0 || $num == 7 )
return 1;
if( $num < 10 )
return 0;
// Recur for ( num / 10 - 2 * num % 10 )
return isDivisibleBy7($num / 10 - 2 *
($num - $num / 10 * 10 ) );
}
// Driver Code
$num = 616;
if( isDivisibleBy7($num )>=0 )
echo("Divisible");
else
echo("Not Divisible");
// This code is contributed by vt_m.
?>
خروجی:
Divisible
روش کار قطعه کد بالا
فرض میشود که b آخرین رقم از عدد n و a عددی است که هنگام تقسیم کردن b به دست میآید. ارائه عدد را میتوان در هر عددی که نسبت به مقسومعلیه اول است ضرب (چند برابر) کرد، بدون آنکه بخشپذیری آن تغییر کند. پس از مشاهده آنکه ۲۱ بر ۷ بخشپذیر است، میتوان اقدامات زیر را انجام داد.
۱۰٫a + b
پس از ضرب در ۲، خروجی به صورت زیر خواهد بود:
۲۰٫a + 2.b
و سپس:
۲۱٫a – a + 2.b
با حذف ضریب ۲۱، رابطه زیر حاصل میشود:
-a + 2b
و با ضرب در ۱-، خروجی زیر حاصل میشود:
a – 2b
روشهای دیگری نیز برای بررسی بخشپذیری بر ۷ و دیگر اعداد وجود دارد.
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی
- آموزش برنامهنویسی C++
- مجموعه آموزشهای ریاضیات
- یافتن دور همیلتونی با الگوریتم پس گرد — به زبان ساده
- الگوریتم بازی مار و پله همراه با کد — به زبان ساده
- حل مساله n وزیر با الگوریتم پسگرد (Backtracking) — به زبان ساده
مجموعه: برنامه نویسی, کدهای آماده, مهندسی کامپیوتر برچسب ها: ++C, C-sharp, Java, python, بخش پذیری, بخش پذیری بر ۷, بخش پذیری بر هفت, پایتون, جاوا, سی, سی پلاس پلاس, سی شارپ