অনুপস্থিত প্রাইমগুলি মুদ্রণ করুন


18

কাজটি

একটি প্রোগ্রাম বা ফাংশন যা, যখন একটি সংখ্যাসূচক ইনপুট পাস লিখুন x, কপি করে প্রিন্ট বা আয় মৌলিক সংখ্যার বর্গমূল তলদেশে x1 যে কারণের নয় x

উদাহরণ

f(x)ফাংশন বলা যাক :

>>> f(4)
[]

>>> f(5)
[2]

>>> f(20)
[3]

>>> f(60)
[7]

>>> f(100)
[3, 7]

>>> f(10000)
[3, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

বোনাস বিধি

  • আপনি আপনার ভাষা সরবরাহ করে এমন কোনও বিল্টিন ব্যবহার করতে পারেন।
  • আপনার প্রোগ্রামকে অবশ্যই xআপনার ভাষার দ্বারা নির্ধারিত উপরের সীমানা পর্যন্ত উচ্চতর একটি ইনপুট সমর্থন করতে হবে ।

1 বর্গমূলের নীচে কেবল প্রাইম হিসাবে বর্গমূল ব্যবহার করা আসলে এর কারণগুলির মধ্যে জড়িত হতে পারে x। এই সীমাবদ্ধতা না তৈরি করে বড় সংখ্যায় অতিরিক্ত অতিরিক্ত মুদ্রিত সংখ্যা থাকবে।


3
"বর্গমূলের নীচে কেবল প্রাইমগুলি আসলে x" এর কারণগুলির মধ্যে জড়িত থাকতে পারে "সত্য নয়: একটি সংখ্যার মধ্যে এমন একটি প্রধান উপাদান থাকতে পারে যা এর বর্গমূলের চেয়ে বড়। প্রকৃতপক্ষে, আপনার প্রথম দুটি উদাহরণের (5 এবং 20) সমস্ত সম্পত্তি যেমন দু'বার সমস্ত বিজোড় প্রাইমদের মতো করে এই সম্পত্তি রয়েছে, ....
গ্রেগ মার্টিন

1
@ গ্রেগমার্টিন হ্যাঁ, তারা পারেন - তবে কারণগুলির প্রথমার্ধের মধ্যে তাদের খুঁজে পাওয়া যাবে না। এটা জ্ঞান করে তোলে 48 যেমন 7 ^ 2 হয় তার চেয়ে অনেক বেশী 48. (আমার যুক্তি সেখানে মিথ্যা) অনুপস্থিত মৌলিক 7 অন্তর্ভুক্ত না
এডিসন মধ্যে Crump

উত্তর:


8

জেলি, জেলির কোডপেজে 6 বাইট

½ÆRḟÆf

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

ব্যাখ্যা:

½ÆRḟÆf
 ÆR    All primes less than or equal to
½      the square root of the input
   ḟ   but with the following removed:
    Æf All prime factors of {the input, by default}

5
জেলি উত্তরগুলি প্রায়শই কেবল আক্ষরিকভাবে চ্যালেঞ্জকে বর্ণনা করে: পি
ইটিএইচ প্রোডাকশনস



5

ম্যাটল্যাব, 57 54 বাইট

function h(p);a=primes(p^.5);a(~ismember(a,factor(p)))

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


1
আমি কখনই ম্যাটল্যাব চেষ্টা করিনি, তবে আমি যা পড়লাম সে অনুযায়ী স্কয়ার্ট (পি) পি ^
.০

নিস! :) আমি একই পদ্ধতির ব্যবহার করে একটি অক্টাভ জমা দিয়েছি ।
স্টিভি গ্রিফিন

4

পাইথ, 10 বাইট

fP_T-S@Q2P

এমন একটি প্রোগ্রাম যা কোনও সংখ্যার ইনপুট নেয় এবং একটি তালিকা মুদ্রণ করে।

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

কিভাবে এটা কাজ করে

fP_T-S@Q2P   Program. Input: Q
fP_T-S@Q2PQ  Implicit input fill
f            Filter
     S@Q2    the 1-indexed range up to floor(sqrt(Q))
    -    PQ  with the prime factors of Q removed
 P_T         by primality
             Implicitly print


3

পিএইচপি, 76 বাইট

for($n=1;++$n*$n<$x=$argv[1];){for($i=$n;$n%--$i;);if($i<2&&$x%$n)echo$n,_;}

ব্যবহার আমার is_prime সমাধান $ N> 1 জন্য golfed

কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়। সাথে চালাও -r


2

গণিত, 46 বাইট

Select[Prime@Range@PrimePi@Sqrt[a=#],!#∣a&]&

বেনামে ফাংশন। ইনপুট হিসাবে একটি সংখ্যা নেয় এবং আউটপুট হিসাবে সংখ্যার একটি তালিকা প্রদান করে। ইউনিকোড চরিত্রটি হ'ল ইউ + 2223 ডিভাইড \[Divides]


2

রুবি, 55 বাইট

require'prime'
->x{Prime.to_a(x**0.5).select{|n|x%n>0}}

বিল্টিন প্রাইম এনুমুলেটর ব্যবহার করে একটি অলস উত্তর answer


2

আশ্চর্য , 14 বাইট

@(_> > ^#0.5)P

ব্যবহার:

(@(_> > ^#0.5)P)10

প্রাইমগুলির অসীম তালিকা থেকে আইটেম নেয় যখন আইটেমটি আর্গুমেন্টের বর্গমূলের চেয়ে কম থাকে।



2

পাওয়ারশেল ভি 2 +, 71 বাইট

param($n)1..[math]::Sqrt($n)|?{$n%$_-and'1'*$_-match'^(?!(..+)\1+$)..'}

Iterative সমাধান। ইনপুট নেয় $nএবং এর থেকে শুরু করে একটি ব্যাপ্তি তৈরি 1করে Sqrt($n)(নোট করুন যে রেঞ্জ অপারেটর সুস্পষ্টভাবে উপরের [int]প্রান্তটিকে এমন একটিতে কাস্ট করবে যা ডিফল্টরূপে ব্যাঙ্কারের রাউন্ডিং করবে)। তারপর ব্যবহারসমূহ |?{...}( Where-Objectঅপারেটর, যা একটি ফিল্টার মত কাজ করে) ঐ সংখ্যার যেখানে উঠিয়ে ফেলা $n%$_হয় নন-জিরো (অর্থাত, মডিউল উপায়ে কোনো বাকি তাই না একটি ফ্যাক্টর, এবং কোনো অ শূন্য truthy হয়) চলিত Regex মৌলিক পরীক্ষা হয় । সেগুলি পাইপলাইনে রেখে গেছে এবং আউটপুট অন্তর্ভুক্ত।-and$true

উদাহরণ

(আউটপুট বেশ সুন্দর করার জন্য কিছু অতিরিক্ত বিন্যাস সহ)

PS C:\Tools\Scripts\golfing> 5,20,60,100,10000|%{"f($_)";(.\print-the-missing-primes.ps1 $_)-join', ';""}
f(5)
2

f(20)
3

f(60)
7

f(100)
3, 7

f(10000)
3, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97

এনবি - এটি পূর্ববর্তী সংস্করণগুলিতে ব্যর্থ হবে যদি চারপাশের চেয়ে ইনপুট বড় হয় 2500000000, কারণ ..পরিসীমা অপারেটর কেবল 50,000 আইটেম পর্যন্ত সমর্থন করতে পারে। তবে, যেহেতু এটি ডিফল্ট [int]ডেটাটাইপের সর্বাধিক মানের চেয়ে বড় 2147483647, তাই আমি ঠিক করছি বলে অনুমান করছি। আমার মেশিনে, PSv4 Win8.1, তবে আমি আরও উঁচুতে যেতে পারি, তবে আমি পার্থক্য ব্যাখ্যা করে ডকুমেন্টেশন খুঁজে পাচ্ছি না।


2

জাভাস্ক্রিপ্ট (ES6), 79 76 বাইট

f=(q,n=2,x=n)=>n*n<q?[...--x<2&&q%n?[n]:[],...x>1&&n%x?f(q,n,x):f(q,n+1)]:[]

আমার পুনরাবৃত্তিমূলক পরীক্ষার ফাংশনের উপর ভিত্তি করে । আমি মনে করি এটি সহজ করার কয়েকটি উপায় থাকা উচিত তবে কীভাবে ...

পরীক্ষার স্নিপেট

f=(q,n=2,x=n)=>n*n<q?[...--x<2&&q%n?[n]:[],...x>1&&n%x?f(q,n,x):f(q,n+1)]:[]
<input type="number" step=1 min=4 value=4 oninput="O.innerHTML='['+f(this.value)+']'"><br>
<pre id=O>[]</pre>


2

অক্টাভা, 44 বাইট

এই উত্তরটি MattWH এর দ্বারা অনুপ্রাণিত হয় ম্যাটল্যাব উত্তর , কিন্তু আমি কিছু অক্টেভ-নির্দিষ্ট বৈশিষ্ট্য ব্যবহার করে এটি golfed গেছেন।

@(x)(y=primes(x^.5))(~ismember(y,factor(x)))

এটি একটি বেনাম ফাংশন যা ইনপুট নেয় x। অক্টাভের ইনলাইন ভেরিয়েবল অ্যাসাইনমেন্ট এবং ইনডেক্সিং রয়েছে yপ্রথমে ফাংশনে তৈরি করার অনুমতি দেওয়া হয়েছে (এমএটিএলবি তে সম্ভব নয়), তারপরে তৈরি লজিক্যাল মাস্কের অংশ হিসাবে ব্যবহার করা হয়েছে ismember(আবার, এমএটিএলএবিতে এটি করা সম্ভব নয়)।


খুব সুন্দর, অষ্টাভের দিকে তাকাতে হবে। এই বৈশিষ্ট্যগুলি গল্ফের জন্য সহায়ক হবে!
ম্যাটডাব্লুএইচ


1

টিএসকিউএল, 130 বাইট

DECLARE @v int=10000

,@ INT=2SELECT 2p INTO #
g:INSERT # SELECT @ FROM # HAVING isnull(min(@%p),1)>0SET @+=1IF @*@<@v GOTO g
SELECT*FROM # WHERE @v%p>0

এটি কেবল একবার কার্যকর করা হবে, তারপরে আপনাকে আবার একই সম্পাদকের মধ্যে কার্যকর করতে টেম্প টেবিলটি ফেলে দিতে হবে

DROP TABLE #

আমি এটি পরীক্ষা করার জন্য একটি সংস্করণ তৈরি করেছি, এটি কিছুটা দীর্ঘ কারণ টেবিলগুলি তৈরি করার জন্য অনলাইন অনুমতি অনুপলব্ধ। একই কারণে যদিও এটি ড্রপ টেবিলের প্রয়োজন নেই।

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


1

আর, 58 63 বাইট

for(i in 2:sqrt(x<-scan()))if(x%%i&numbers::isPrime(i))print(i)

2 থেকে সমস্ত মানের উপরে লুপ করে sqrt(x)এবং numbersপ্যাকেজটিতে সেগুলি প্রাইম কিনা তা পরীক্ষা করে । বিভাজক এবং যদি না হয় তবে তা x%%iগণনা করে ।x mod i0 -> Falseix>0 -> Truei

+5 বাইট কারণ numbers::Primes(n)ফাংশন দশমিকের অনুমতি দেয় না, যখন 2:sqrt(x)কাজ করে, ifবিবৃতিতে প্রধান চেক যুক্ত করে ।


1

হাস্কেল, 55 54 বাইট

f x=[y|y<-[2..x],y*y<x,[z|z<-[1..y],gcd(z*x)y>1]==[y]]

বেশিরভাগ সোজা নেস্টেড তালিকা বোঝার জন্য। জিসিডি দুটি ভূমিকা পালন করে, নীচের y এর সংখ্যাগুলি y এর গুণক কিনা তা পরীক্ষা করে এবং y টি x এর একটি উপাদান কিনা তাও পরীক্ষা করে।

একটু দূরে স্থান:

f x = [ y|y<-[2..x],     y*y<x,     [z|z<-[1..y], gcd (z*x) y > 1] == [y] ]

সাথে একটি বাইট সংরক্ষণ করুন gcd(z*x)y>1
Zgarb

এটিকে আরও দ্রুত করার জন্য আমি প্রথমে y * y <x চেকও রেখেছি।
জেমস হলিস

0

রেটিনা , 69 66 বাইট

.+
$*
(11\1|^1)+
$#1$*1:$&
M!&`(?!(11+)\1+:)(1+):(?!\2+$)
M%`1
^0

বৃহত্তম থেকে ক্ষুদ্রতম পর্যন্ত পৃথক লাইনে প্রাইমগুলি মুদ্রণ করে।

এটি অনলাইন চেষ্টা করুন! (শেষ দুটি পরীক্ষার কেসের কারণে প্রায় 10 সেকেন্ড সময় লাগে head

ব্যাখ্যা

.+
$*

ইনপুটটি আনারিতে রূপান্তর করুন।

(11\1|^1)+
$#1$*1:$&

এটি আলাদা করে আলাদা করে ইনপুটটির স্কোয়ার রুটকে প্রেন্ডেন্ড করে :। বর্গক্ষেত্রটি nএই প্রথম শ্রেণীর nপূর্ণসংখ্যার যোগফলের বর্গক্ষেত্রের ভিত্তিতে গণনা করা হয় । আমরা ফরোয়ার্ড রেফারেন্সের সাথে একটানা বিজোড় পূর্ণসংখ্যার সাথে মেলাতে পারি (11\1|^1)। প্রক্রিয়াটিতে গোষ্ঠীটি ঠিক nসময়ে ব্যবহৃত হবে , যেখানে nবৃহত্তম স্কোরটি যার স্কোয়ারটি ইনপুটটিতে ফিট করে।

আমরা এই সংখ্যার অবিচ্ছিন্ন উপস্থাপনা সন্নিবেশ করি $#1$*1, তার পরে একটি কোলন এবং ম্যাচটি নিজেই।

M!&`(?!(11+)\1+:)(1+):(?!\2+$)

এটি সমস্ত অনুপস্থিত প্রাইমের সাথে মেলে যা বর্গমূলের সাথে খাপ খায়। প্রাইম সনাক্তকরণটি স্ট্যান্ডার্ড প্রাইম চেকিং রেজেক্সের উপর ভিত্তি করে তৈরি করা হয় এবং তারপরে আমরা কেবল তা নিশ্চিত করে থাকি যে আমরা সবেমাত্র ক্যাপচার করেছি সেই প্রাইমটি দ্বিতীয় লুকের সাথে ইনপুটটি বিভক্ত না করে। &বিকল্পটি ব্যবহার করে , আমরা সমস্ত প্রাইমস পেয়েছি তা নিশ্চিত করার জন্য আমরা ওভারল্যাপিং মিলগুলি পাই।

M%`1

এটি প্রতিটি লাইনকে (অর্থাত্ প্রতিটি নিখোঁজ প্রাইমকে) দশমিকায় রূপান্তর করে এর সংখ্যার সাথে মিল রেখে 1। একমাত্র সমস্যাটি হ'ল যদি কোনও অনুপস্থিত প্রাইমগুলি পাওয়া না যায় তবে এটি একটি শূন্য সন্নিবেশ করায়।

^0

সুতরাং এই পর্যায়টি যুক্ত করা থাকলে সেই শূন্যটিকে সরিয়ে দেয়।

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