প্রাইমস মধ্যে পচা


14

একটি পূর্ণসংখ্যা দেওয়া হয় n, মৌলিক সংখ্যার একটি তালিকা হিসাবে এনগুলি কীভাবে লিখতে পারে তার সংখ্যাটি ফিরিয়ে দিন। উদাহরণস্বরূপ, 2323হিসাবে লিখিত হতে পারে (2,3,23), (23,23)বা (2,3,2,3)বা (23,2,3), তাই আপনি আউটপুট would 4। যদি এটি এভাবে লেখা না যায় তবে আপনার আউটপুট করা উচিত 0

একটি প্রধান সংখ্যা যেমন 019বা 00000037এই সমস্যার জন্য একটি বৈধ প্রাইম।

পরীক্ষার কেস:

5 -> 1
55 -> 1 
3593 -> 4 (359 and 3, or 3 and 593, or 3 and 59 and 3, or 3593)
3079 -> 2 (3 and 079, or 3079)
119 -> 0 
5730000037 -> 7 (5,7,3,000003,7, 5,7,3,0000037, 5,73,000003,7, 5,73,0000037, 5,73000003,7, 5,7,30000037, 5730000037)
0-> undefined (you do not have to handle this case)

এটি , তাই প্রতিটি ভাষার বাইটে সংক্ষিপ্ত উত্তরটি জিতে যায়!

সম্পাদনা করুন: এখন আমি জানি কেন পরের বার আমাকে স্যান্ডবক্স ব্যবহার করা উচিত


উত্তর:


7

Haskell, , 96 89 বাইট

এইচ.পি.উইজের প্রাথমিকতা পরীক্ষার জন্য 5 বাইট সংরক্ষণ করা হয়েছে

p x=[1|0<-mod x<$>[2..x]]==[1]
f[]=1
f b=sum[f$drop i b|i<-[1..length b],p$read$take i b]

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

প্রথম কাজটি হ'ল উইলসনের উপপাদ্যটি প্রাইম সংজ্ঞা ব্যবহার করে একটি প্রাইম টেস্ট ফাংশন তৈরি করা ।

p x=[1|0<-mod x<$>[2..x]]==[1]

তারপরে সংজ্ঞা দেওয়া শুরু করুন f। এই সমস্যাটি দেখে আমি প্রথম যে জিনিসটি ভেবেছিলাম তা হ'ল ডায়নামিক প্রোগ্রামিং। তবে গতিশীল প্রোগ্রামিংয়ের ব্যয়গুলি ব্যয় হয় তাই এটি "স্যুইডো-ডায়নামিক প্রোগ্রামিং" অ্যালগরিদম ব্যবহার করে। ডায়নামিক প্রোগ্রামিংয়ের ক্ষেত্রে আপনি এখানে স্মরণে একটি ডাইরেক্টেড অ্যাসাইক্লিক গ্রাফ সংরক্ষণ করবেন আমরা কেবল পুনরাবৃত্তি ব্যবহার করি এবং প্রতিটি নোডের প্রতিবার যখন প্রয়োজন হয় তখন পুনরায় গণনা করি। এটি গতিশীল প্রোগ্রামিংয়ের সমস্ত সময়ের সুবিধাগুলি হারাতে পারে তবে এটি তাই কে যত্ন করে। (যদিও নিষ্ঠুর বাহিনী অনুসন্ধানের চেয়ে ভাল)

অ্যালগরিদম নিম্নরূপ, আমরা একটি নির্দেশিত অ্যাসাইক্লিক গ্রাফ, এল নির্মাণ করি যেখানে প্রতিটি নোড সংখ্যার একটি স্তরকে প্রতিনিধিত্ব করে। বিশেষত এল i আমাদের ইনপুটটিরশেষ i ডিজিটগুলিউপস্থাপন করে(এটি কল করুক এন )।

আমরা L 0 টি সংজ্ঞায়িত করি প্রতিটি এল জে যেমন j <i এবং এর স্ট্রিংয়ের যোগফলের জন্য L এর একে অপরের মান থাকে n থেকে 1 এর থেকে স্ট্রিংটি প্রধান হয়।

বা একটি সূত্রে:

সূত্র

এরপরে আমরা L এর বৃহত্তম বৃহত্তম সূচকে মানটি ফিরিয়ে দেব । ( এল যেখানে টি সংখ্যা সংখ্যা এন )


6

জেলি , 8 বাইট

ŒṖḌÆPẠ€S

এটি অনলাইন চেষ্টা করুন!

-1 বাইট ধন্যবাদ লিকি নুন
-1 বাইট ধন্যবাদ ডেনিসকে ধন্যবাদ

ব্যাখ্যা

ŒṖḌÆPẠ€S  Main Link
ŒṖ        List Partitions (automatically converts number to decimal digits)
  Ḍ       Convert back to integers (auto-vectorization)
   ÆP     Are they primes? (auto-vectorization)
     Ạ€   For each, are they all truthy (were the numbers all primes?); 1/0 for truthy/falsy
       S  Sum; gets number of truthy elements

আমি লক্ষ্য করেছি যে 05AB1E সহজেই এটি করতে পারে না। পার্টিশনগুলি দুর্দান্ত কমান্ডের মতো মনে হয়।
ম্যাজিক অক্টোপাস আরন

5

ব্র্যাচল্যাগ , 10 বাইট

ṫ{~cịᵐṗᵐ}ᶜ

এটি অনলাইন চেষ্টা করুন!

প্রথমে ইনপুটটিকে স্ট্রিংয়ে রূপান্তর করে। {…}ᶜসম্ভাব্য আউটপুটগুলির সংখ্যা গণনা করে

ভিতরে {…}আউটপুট খাওয়ানো হয় ~c। এই প্রাকটিকের আউটপুট সন্তুষ্ট করে যে, যখন কনটেনটেটেড হয়, তখন এটি ইনপুটটির সমান। ịᵐএটিতে খাওয়ানো হয় , যা নির্দিষ্ট করে যে এর আউটপুটটি প্রতিটি স্ট্রিংয়ের সাথে একটি পূর্ণসংখ্যায় রূপান্তরিত হয় input ṗᵐনির্দিষ্ট করে দেয় যে এর ইনপুটটিতে প্রাইম রয়েছে


1
আপনি রূপান্তর STRING এবং পিছনে প্রয়োজন হবে না, যারা 7 বাইট যথেষ্ট আছেন: {~cṗᵐ}ᶜ। এটি সত্যই ধীর কারণ ~cপূর্ণসংখ্যায় সীমাবদ্ধ পাটিগণিতের সাথে কাজ করে তবে তাত্ত্বিকভাবে এটি কাজ করে।
20:38

@ ফ্যাটালাইজ আমি মনে করি যে নেতৃস্থানীয় শূন্যগুলির অ্যাকাউন্টে ব্যর্থ হয়
এইচ.পি.উইজ

4

পাইথ , 13 বাইট

lf.AmP_sdT./`

পরীক্ষা স্যুট.


আমি পাইথকে সে কথাটি ভালভাবে জানি না তবে ফিল্টারিংয়ের পরিবর্তে এবং দৈর্ঘ্যটি নেওয়ার পরে, আপনি কি ফিল্টারের পরিবর্তে_আচ করতে পারেন এবং তার পরে যোগফল করতে পারেন?
হাইপারনিউট্রিনো

@ হাইপারনিট্রিনো কি এতে কোনও পার্থক্য সৃষ্টি করে?
Leaky নুন

আমি নিশ্চিত নই, আমি পরীক্ষা করিনি। এটি জেলির জন্য করে (সম্ভবত দ্বি-বাইট ফিল্টারটি দ্রুত কারণে) তবে আমি নিশ্চিত নই।
হাইপারনিউট্রিনো

@ হাইপার নিউট্রিনো ফিল্টারটি এখানে একটি বাইট ...
লিকি নুন


2

পাইথন 2 , 161 বাইট

lambda n:sum(all(d>1and all(d%i>0for i in range(2,d))for d in v)for v in g(`n`))
g=lambda s:[[int(s[:i])]+t for i in range(1,len(s))for t in g(s[i:])]+[[int(s)]]

এটি অনলাইন চেষ্টা করুন!

ফাংশনটি gপুনরাবৃত্তভাবে পার্টিশন তৈরি করে (এটি ইনপুট হিসাবে একটি স্ট্রিং নেয় তবে ints তালিকাগুলির একটি তালিকা আউটপুট করে)। বাকি কোডগুলির বেশিরভাগটি কেবল ' dএকটি প্রাইম?' প্রয়োগ করতে হয় ।





আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.