تمرین کامل بودن یا نبودن + جاوا/سی پلاس پلاس
در این نوشته تمرین “تمرین کامل بودن یا نبودن” که در وبسایت کوئرا موجود است را برای شما کاربران عزیز حل کردیم.
تمرین کامل بودن یا نبودن + جاوا/سی پلاس پلاس
سوال تمرین کامل بودن یا نبودن
برنامهای بنویسید که عددی مانند N را از کاربر دریافت کند و در صورتی که خاصیت کامل بودن را داشته، یعنی مجموع مقسوم علیههای آن (غیر از خودش) برابر با آن عدد شود، YES و در غیر این صورت NO را چاپ کند.
ورودی تمرین کامل بودن یا نبودن
در یک خط عدد N به شما داده میشود.
1≤N≤200000
خروجی تمرین کامل بودن یا نبودن
چنانچه عدد کامل بود YES در غیراینصورت NO چاپ کنید.
مثال تمرین کامل بودن یا نبودن
Sample 1: =============================================== input : 27 output : No Sample 2: =============================================== input : 6 output : YES
راهنمای حل
کامل بودن عدد یا کامل نبودن عدد شامل یک حلقه است که به عدد آنرا تقسیم میکنیم. در صورتی که حاصل این تقسیم صفر شد آنرا به حاصل متغیر count اضافه میکنیم. در آخر تساوی متغیر count و عدد اصلی را بررسی میکنیم و خروجی YES و NO را چاپ میکنیم.
حل تمرین(جاوا)
import java.util.Scanner;
public class Main {
public static Scanner sc;
public static void main(String[] args) {
sc = new Scanner(System.in);
int number = sc.nextInt();
int count = 0;
for (int i = 1; i <= number / 2;i++) {
if(count == number) {
count += i;
}
}
if(count == number) {
System.out.println("YES");
}
else {
System.out.println("No");
}
}
}
حل تمرین(سی پلاس پلاس)
#include <iostream>
using namespace std;
int main()
{
int number;
cin >> number;
int count = 0;
for (int i = 1; i <= number / 2;i++)
if(number % i == 0)
count += i;
if(count == number)
cout << "YES" << endl;
else
cout << "No" << endl;
return 0;
}
کد حل شده توسط کاربر “امیرحسین” – (اصلاح)
#include "iostream.h"
using namespace std;
int main()
{
long long int a, b, c, n;
cin>> n;
c = 0;
for(int i =1; i!=n; i++)
{
if(n % i == 0)
{
c += i;
}
}
if(c == n)
{
cout <<"YES";
}
else
{
cout<<"NO";
}
return 0;
}
منبع سوال: وبسایت کوئرا



















آیا این روش برای پیدا کردن اعداد شبهکامل هم کار میکند؟
بله ولی نیاز به کمی تغییر دارد.
اگر عدد منفی وارد کنیم، چه اتفاقی میافتد؟
چیزی اجرا نمیشود.
آیا استفاده از نوع داده long long ضروری است؟
بله ضرروری است.
آیا میتوان این مسئله را با الگوریتم بازگشتی هم حل کرد؟
بله امکان حل این سوال با الگوریتمهای بازگشتی هم هست.
سلام.
این کد تون کوعرا accept نمی شه.
کد درست اینه فقط یه خورده در هم بر هم شد اینجا. لطفا قرارش بدید
#include
using namespace std;
int main()
{
long long int a, b, c, n;
cin>> n;
c = 0;
for(int i =1; i!=n; i++)
{
if(n % i == 0)
{
c += i;
}
}
if(c == n)
{
cout << "YES";
}
else
{
cout << "NO";
}
return 0;
}
متشکرم در نوشته ی بالا اصلاح شد.