بکندباز

“ضد مقسوم‌ها” اعدادی هستند که با بیشترین اختلاف ممکن، مقسوم عدد داده شده نیستند. برای یافتن ضد مقسوم‌ها، قوانین زیر دنبال می‌شود:

  1. هر عدد بزرگ‌تر از 1 و کمتر از n بررسی می‌شود.
  2. عدد بررسی شده نباید مقسوم عدد n باشد.
  3. اگر عدد بررسی شده فرد باشد و مقسوم یکی از n * 2 - 1 یا n * 2 + 1 باشد، آن عدد ضد مقسوم است.
  4. اگر عدد بررسی شده زوج باشد و مقسوم عدد n * 2 باشد، آن عدد ضد مقسوم است.

یک تابع پیاده‌سازی کنید که عدد صحیح n را گرفته و لیستی از ضد مقسوم‌های آن را به ترتیب صعودی برگرداند.

مثال

anti_divisors(10) ➞ [3, 4, 7]
# 3 مقسوم 21 است (10 * 2 + 1)
# 4 مقسوم 20 است (10 * 2)
# 7 مقسوم 21 است

anti_divisors(12) ➞ [5, 8]
# 5 مقسوم 25 است (12 * 2 + 1)
# 8 مقسوم 24 است (12 * 2)

نمونه ورودی و خروجی

AntiDivisors(10) ➞ [3, 4, 7]

AntiDivisors(12) ➞ [5, 8]

AntiDivisors(20) ➞ [3, 8, 13]

نکات

  • عدد داده شده n می‌تواند مثبت، منفی یا صفر باشد.
  • ضد مقسوم‌ها باید به ترتیب صعودی مرتب شوند.
EXPECT_EQ(AntiDivisors(10), std::vector({3, 4, 7}));
EXPECT_EQ(AntiDivisors(12), std::vector({5, 8}));
EXPECT_EQ(AntiDivisors(20), std::vector({3, 8, 13}));
EXPECT_EQ(AntiDivisors(1), std::vector({" "}));
EXPECT_EQ(AntiDivisors(31), std::vector({2, 3, 7, 9, 21}));
EXPECT_EQ(AntiDivisors(55), std::vector({2, 3, 10, 22, 37}));
EXPECT_EQ(AntiDivisors(105), std::vector({2,  6, 10, 11, 14, 19, 30, 42, 70}));

هنوز پاسخی برای این تمرین ثبت نشده است

نظرات

*
*

تمرینات مرتبط