একটি সংখ্যা n এবং আরেকটি k দেওয়া আছে। n কি kটি প্রাইম সংখ্যার যোগফল হিসেবে লেখা যায় কিনা তা যাচাই করতে হবে।
উদাহরণ
ইনপুট: n = 30, k = 3
আউটপুট: True
কারণ 30 = 2 + 11 + 17
সমাধান পদ্ধতি
- যদি
n < k*2হয়, False রিটার্ন করুন (সর্বনিম্ন প্রাইম ২)। - যদি
2হয়, True রিটার্ন করুন (গোল্ডব্যাক-এর দুর্বল অনুমান অনুযায়ী)। - যদি
k == 2হয়:nজোড় হলে True (গোল্ডব্যাক অনুমান)।n-2প্রাইম হলে True।- অন্যথায় False।
- যদি
k == 1হয়,nপ্রাইম কিনা চেক করুন।
পাইথন ইমপ্লিমেন্টেশন
def isPrime(num):
if num > 1:
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
return False
def solve(n, k):
if n < k * 2:
return False
if k > 2:
return True
if k == 2:
if n % 2 == 0:
return True
if isPrime(n - 2):
return True
return False
if isPrime(n):
return True
return False
# টেস্ট
n = 30
k = 3
print(solve(n, k)) # আউটপুট: True
ইনপুট
30, 3
আউটপুট
True