এটি কি সেমিপ্রাইম?


26

আশ্চর্যজনকভাবে, আমি মনে করি না যে কোনও সংখ্যাটি সেমিপ্রাইম কিনা তা নির্ধারণের জন্য আমাদের কাছে একটি প্রশ্ন রয়েছে ।

একটি সেমিপ্রাইম একটি প্রাকৃতিক সংখ্যা যা দুটি (প্রয়োজনীয় স্বতন্ত্র নয়) প্রধান সংখ্যার গুণফল।

যথেষ্ট সহজ, তবে একটি উল্লেখযোগ্য গুরুত্বপূর্ণ ধারণা।

ধনাত্মক পূর্ণসংখ্যা দেওয়া হয়েছে তা নির্ধারণ করুন এটি সেমিপ্রাইম কিনা। আপনার ফলাফল আউটপুট যেকোন ফর্মে থাকতে পারে যতক্ষণ না এটি কোনও সত্যবাদী বা মিথ্যা মানের জন্য একই আউটপুট দেয়। আপনি ধরে নিতে পারেন যে আপনার ইনপুটটি যথেষ্ট যথেষ্ট ছোট কারণ পারফরম্যান্স বা ওভারফ্লো কোনও সমস্যা নয়।

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

input -> output
1     -> false
2     -> false
3     -> false
4     -> true
6     -> true
8     -> false
30    -> false   (5 * 3 * 2), note it must be EXACTLY 2 (non-distinct) primes
49    -> true    (7 * 7)      still technically 2 primes
95    -> true
25195908475657893494027183240048398571429282126204032027777137836043662020707595556264018525880784406918290641249515082189298559149176184502808489120072844992687392807287776735971418347270261896375014971824691165077613379859095700097330459748808428401797429100642458691817195118746121515172654632282216869987549182422433637259085141865462043576798423387184774447920739934236584823824281198163815010674810451660377306056201619676256133844143603833904414952634432190114657544454178424020924616515723350778707749817125772467962926386356373289912154831438167899885040445364023527381951378636564391212010397122822120720357
      -> true, and go call someone, you just cracked RSA-2048

এটি , সুতরাং স্ট্যান্ডার্ড বিধিগুলি প্রয়োগ হয়!


4
@ ওয়েট উইজার্ডের মধ্যে কিছুটা পার্থক্য রয়েছে যে 3 টি প্রাইম চেয়েছে (প্রায় সমস্ত ভাষার জন্য বড় পার্থক্য নয়) এবং এটি কেবল আলাদা আলাদা প্রাইমগুলির জন্য (কিছু ভাষার ক্ষেত্রে মোটামুটি আলাদা)। আপনি আরও বিশদ আলোচনা চালিয়ে যেতে চাইলে আমি আড্ডায় এটি আপনার সাথে আলোচনা করতে পারি।
হাইপার নিউট্রিনো

2
@ ওয়েট উইজার্ড আপনি একটি ভাল বক্তব্য উত্থাপন করেছেন, তবে একইভাবে, ইতিমধ্যে আমাদের কাছে অনেক ধরণের প্রশ্ন রয়েছে এবং আপনি যা প্রকাশ করেন তার বিপরীতে, বেশিরভাগই তাদের অঞ্চলে উল্লেখযোগ্য অবদান রাখেন, এই প্রশ্নের যথেষ্ট পার্থক্য রয়েছে আমি বিশ্বাস করব যে এটি একটি পৃথক প্রশ্ন / পোস্টের পরোয়ানা দেয়।
হাইপারনিউট্রিনো

2
@ হাইপারনেট্রিনো উভয় চ্যালেঞ্জের উত্তর দেখে, দেখে মনে হচ্ছে পার্থক্যটি সোর্স কোডের একটি সংখ্যা, ২ বনাম 3.
গম উইজার্ড

2
@ ওয়েট উইজার্ড "স্বতন্ত্র" বনাম "আলাদা নয়" রয়েছে ...
হাইপারনিউটারিনো

3
@ লর্ডফেরাকোয়াড কেবল কারণ এটির একটি সদৃশ এর অর্থ এটি খারাপ নয়। আমার মনে সদৃশ হওয়া একটি ভাল জিনিস, এর অর্থ হ'ল আপনি এমন একটি বিষয় জিজ্ঞাসা করছেন যা সম্প্রদায়টি ইতিমধ্যে জিজ্ঞাসা করার জন্য যথেষ্ট আকর্ষণীয় বলে মনে করে।
গম উইজার্ড

উত্তর:


19

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

স্পেনিক সংখ্যা চ্যালেঞ্জের ফ্যাটালাইজের উত্তর থেকে মূলত একটি বন্দর ।

ḋĊ

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

কিভাবে?

ḋĊ - implicitly takes input
ḋ  - prime factorisation (with duplicates included)
 Ċ - is a couple

1
কাজের পক্ষে সত্যই ভাষা: পি
হাইপারনিউটারিনো

2
@ ইউরিয়েল Ċআসলে দুটি ভেরিয়েবলের অন্তর্নির্মিত তালিকা; একটি ঘোষিত ভাষা হওয়ায় আউটপুট হ'ল ডিফল্টরূপে সন্তুষ্টির জন্য পরীক্ষা (উদাহরণস্বরূপ অ-নেতিবাচক পূর্ণসংখ্যার জন্য এটি নিজস্ব উত্পাদন করবে true.)।
জোনাথন অ্যালান

এই 2 বাইট কেমন?

1
@ শারিড আমি ব্র্যাচল্যাজের কোড পৃষ্ঠাতে শিরোনামের লিঙ্কটিতে "বাইটস" তৈরি করতে সবেমাত্র আপডেট করেছি। একটি হেক্স ডাম্প হবে c6 eb
জোনাথন অ্যালান


8

গণিত, 16 বাইট

PrimeOmega@#==2&

PrimeOmega বহুগুণ গণনা করে মৌলিক সংখ্যাগুলির সংখ্যা গণনা করে।


1
ডাং, সেখানে কোন বিল্টিন আছে?
জংহওয়ান মিন

1
@ জংহওয়ানমিন যদি কেবল সেখানেই SemiprimeQ
থাকত

খুশী হলাম। আমি জানতাম নাPrimeOmega
ডেভিডসি


7

পাইথন 3 , 54 বাইট

lambda n:0<sum((n%x<1)+(x**3==n)for x in range(2,n))<3

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

পূর্ববর্তী verson বৃহৎ ঘনক্ষেত্র সংখ্যা (কিছু rounding সমস্যা ছিল 125, 343ইত্যাদি)
এই ভাজক পরিমাণ (শুধুমাত্র মৌলিক নয়), যদি এটা আছে হিসাব 1বা 2এটা ফেরৎ True
কেবলমাত্র ব্যতিক্রমটি যখন কোনও সংখ্যার দুটিরও বেশি মৌলিক কারণ থাকে তবে কেবল দুটি বিভাজক থাকে। এই ক্ষেত্রে এটি একটি প্রাইমের একটি নিখুঁত ঘনক্ষেত্র (এর বিভাজকগুলি এটির কিউব রুট এবং এর কিউব রুট স্কোয়ার্ড)। x**3==nএই কেসটি কভার করবে, কিউব রুট এন্ট্রিতে একটি যুক্ত করে যোগফলকে 3 টি গণনা অবধি চাপিয়ে দেয় এবং মিথ্যা-পজিটিভ বন্ধ করে দেয়। এই সুন্দর ব্যাখ্যা সহ লেখার জন্য জোনাথন অ্যালানকে ধন্যবাদ জানাই



n**(1/3)%1>0<sum...কাজ করা উচিত.
ডেনিস

1
@ এক্সনর এটি স্থির করে দিয়েছে।
রড

একটি ছোট সম্পাদনা করা হয়েছে (উদাহরণস্বরূপ 6 কিউবেডে আরও অনেক বিভাজন রয়েছে)
জোনাথন অ্যালান

6

রুবি , 56 48 বাইট

->x{r=c=2;0while x%r<1?(x/=r;c-=1):x>=r+=1;c==0}

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

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

->x{                    # Lambda function
    r=c=2;              # Starting from r=2, c=2
    0 while             # Repeat (0 counts as a nop)
        x%r<1? (        # If x mod r == 0
            x/=r:       # Divide x by r
            c-=1        # decrease c
        ):              # else
            x>=r+=1     # increase r, terminate if r>x 
    );
    c==0                # True if we found 2 factors
}

8 বাইট সংরক্ষণ করেছে এমন ধারণার জন্য ধন্যবাদ মান কালি।


কেন আপনি কেবল c0 এ শুরু হয়ে গণনা করবেন না, এটির পরিবর্তে এটিকে অ্যারে তৈরি করার পরিবর্তে আপনি সমস্ত কারণকে যুক্ত করেছেন? এইভাবে আপনি sizeশেষে ব্যবহারের প্রয়োজনীয়তাটি গ্রহণ করেন
মান কালি

আপনি ঠিক বলেছেন, কারণ আমি অন্য চ্যালেঞ্জের জন্য ফ্যাক্টরাইজেশন ফাংশনটি লিখেছি এবং আমি এটি এখানে পুনরায় ব্যবহার করেছি।
জিবি


4

আপনি কীভাবে ব্যাখ্যা করতে পারেন এটি কীভাবে 4 বাইট? ... আমি সম্পূর্ণ বিভ্রান্ত
মিঃ এক্সকোডার

লুল আমি ঠিক ছিল এই
HyperNeutrino

@ মিঃ এক্সকোডার নিমের একটি কাস্টম কোড পৃষ্ঠা রয়েছে
জংহওয়ান মিন

@ Mr.Xcoder Neim codepage ব্যবহার করে, এই হল 𝐏, 𝐥, δ, এবং 𝔼একক বাইট হিসাবে।
হাইপারনিউট্রিনো

@ হাইপার নিউট্রিনো আমি কেবল 2 টি সামান্য বিস্মৃত করেছিলাম, এবং এখন 2 ছাড়া এটিই একমাত্র উত্তর
অক্স

4

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

lambda k:f(k)==2
f=lambda n,k=2:n/k and(f(n,k+1),1+f(n/k,k))[n%k<1]

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

-10 বাইটস @ জোনাথান অ্যালানকে ধন্যবাদ!

প্রাইম ফ্যাক্টেরাইজেশন অ্যালগরিদমের ক্রেডিট ডেনিসকে যায় (প্রাথমিক সংস্করণে)


আপনি ডেনিসের উত্তর থেকে কোডটি ব্যবহার করেছেন ? যদি তা হয় তবে আপনার ক্রেডিট দেওয়া উচিত।
সম্পূর্ণরূপে

1
@ টোটালিহুমান ওহ হ্যাঁ, দুঃখিত। আমি আজ এটি 2 টি ভিন্ন উত্তরে ব্যবহার করেছি এবং আমি তার মধ্যে একটিতে তাকে ক্রেডিট দিয়েছি, তবে আমি আরও একবার এখানে করতে ভুলে গিয়েছি। দাগ দেওয়ার জন্য ধন্যবাদ!
মিঃ এক্সকোডার 19


@ জোনাথান অ্যালান বাহ, অনেক ধন্যবাদ!
মিঃ এক্সকোডার


4

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

একটি বুলিয়ান ফেরত দেয়।

n=>(k=1)==(d=n=>++k<n?n%k?d(n):d(n/k--)+1:0)(n)

ডেমো


4

গণিত 32 বাইট

1 বাইট সংরক্ষিত জন্য Ngenesis ধন্যবাদ

Tr@FactorInteger[#][[;;,2]]==2&

1
;;পরিবর্তে ব্যবহার করে একটি বাইট সংরক্ষণ করুন All
নেগনিসিস






3

গাইয়া , 4 বাইট

ḍl2=

4 বাইটগুলি একটি সাধারণ দৈর্ঘ্য বলে মনে হচ্ছে, আমি কেন বিস্মিত হই ...: পি

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

ব্যাখ্যা

ḍ     Prime factors
 l    Length
  2=  Equals 2?

4 বাইটগুলি একটি সাধারণ দৈর্ঘ্য বলে মনে হচ্ছে, আমি অবাক হই কেন ... - সম্ভবত কারণ সমস্ত উত্তরগুলি প্রধান কারণ, দৈর্ঘ্য 2 এর সমান?
মিঃ এক্সকোডার

@ এমআরএক্সকোডার হ্যাঁ, ঠিক
ব্যবসায় ক্যাট

যার মধ্যে 4 টি আমার
বিটিডাব্লু

4 প্রথম সেমিপ্রাইমও। ভুতুরে!
নীল

3

সিমপাই 1.1.1 ,  57  44 বাইট সহ পাইথন

-13 বাইট ধন্যবাদ আলেফাল্ফাকে (1.1.1 ব্যবহার করুন primeomega)

from sympy import*
lambda n:primeomega(n)==2

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


lambda n:primeomega(n)==2
আলেফাল্ফ

আহ যে আমাকে 1.0 থেকে আপগ্রেড করার জন্য মনে করিয়ে দেয়, ধন্যবাদ!
জোনাথন অ্যালান



2

জাভা 8, 69 61 বাইট

n->{int r=1,c=2;for(;r++<n;)for(;n%r<1;n/=r)c--;return c==0;}

-8 ধন্যবাদ বাইট @Nevay

এখানে চেষ্টা করুন।


1
আপনি else++r;8 বাইট সংরক্ষণ করতে অন্য বিবৃতিটি (যা হতে পারে ) সরিয়ে ফেলতে পারেন n->{int r=1,c=2;for(;r++<n;)for(;n%r<1;n/=r)c--;return c==0;}
নেভায়ে


1

সি #, 112 বাইট

n=>{var r=Enumerable.Range(2,n);var l=r.Where(i=>r.All(x=>r.All(y=>y*x!=i)));return l.Any(x=>l.Any(y=>y*x==n));}

বিন্যাস প্রয়োগ করা সহ:

n =>
{
    var r = Enumerable.Range (2, n);
    var l = r.Where (i => r.All (x => r.All (y => y * x != i)));
    return l.Any (x => l.Any (y => y * x == n));
}

এবং পরীক্ষার প্রোগ্রাম হিসাবে:

using System;
using System.Linq;


namespace S
{
    class P
    {
        static void Main ()
        {
            var f = new Func<int, bool> (
                n =>
                {
                    var r = Enumerable.Range (2, n);
                    var l = r.Where (i => r.All (x => r.All (y => y * x != i)));
                    return l.Any (x => l.Any (y => y * x == n));
                }
            );

            for (var i = 0; i < 100; i++)
                Console.WriteLine ($"{i} -> {f (i)}");
            Console.ReadLine ();
        }
    }
}

যার আউটপুট রয়েছে:

0 -> False
1 -> False
2 -> False
3 -> False
4 -> True
5 -> False
6 -> True
7 -> False
8 -> False
9 -> True
10 -> True
11 -> False
12 -> False
13 -> False
14 -> True
15 -> True
16 -> False
17 -> False
18 -> False
19 -> False
20 -> False
21 -> True
22 -> True
23 -> False
24 -> False
25 -> True
26 -> True
27 -> False
28 -> False
29 -> False
30 -> False
31 -> False
32 -> False
33 -> True
34 -> True
35 -> True
36 -> False
37 -> False
38 -> True
39 -> True
40 -> False
41 -> False
42 -> False
43 -> False
44 -> False
45 -> False
46 -> True
47 -> False
48 -> False
49 -> True
50 -> False
51 -> True
52 -> False
53 -> False
54 -> False
55 -> True
56 -> False
57 -> True
58 -> True
59 -> False
60 -> False
61 -> False
62 -> True
63 -> False
64 -> False
65 -> True
66 -> False
67 -> False
68 -> False
69 -> True
70 -> False
71 -> False
72 -> False
73 -> False
74 -> True
75 -> False
76 -> False
77 -> True
78 -> False
79 -> False
80 -> False
81 -> False
82 -> True
83 -> False
84 -> False
85 -> True
86 -> True
87 -> True
88 -> False
89 -> False
90 -> False
91 -> True
92 -> False
93 -> True
94 -> True
95 -> True
96 -> False
97 -> False
98 -> False
99 -> False


1

রেটিনা , 45 বাইট

.+
$*
^(11+)(\1)+$
$1;1$#2$*
A`\b(11+)\1+\b
;

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। ব্যাখ্যা:

.+
$*

অ্যানারিতে রূপান্তর করুন।

^(11+)(\1)+$
$1;1$#2$*

দুটি কারণ আবিষ্কার করার চেষ্টা করুন।

A`\b(11+)\1+\b

উভয় কারণই প্রধান En

;

দুটি কারণ খুঁজে পাওয়া গেছে তা নিশ্চিত করুন।


1

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

def g(x,i=2):
 while x%i:i+=1
 return i
def f(n,l=0):
 while 1%n:l+=1;n/=g(n)
 return l==2

fএর nচেয়ে বড় বা সমান 1, পূর্ণসংখ্যার সাথে বুলিয়ান দেয়।

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

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

>>> f(1)
False
>>> f(2)
False
>>> f(3)
False
>>> f(4)
True
>>> f(6)
True
>>> f(8)
False
>>> f(30)
False
>>> f(49)
True
>>> f(95)
True

1

জে , 6 বাইট

5 বাইট এক-অফ হিসাবে কাজ করবে:

   2=#q: 8
0
   2=#q: 9
1

আমি বিশ্বাস করি যখন আমি ফাংশনটি সংজ্ঞায়িত করি তখন আমার ছয়টি দরকার:

   semiprime =. 2=#@q:
   (,. semiprime) 1 + i. 20
 1 0
 2 0
 3 0
 4 1
 5 0
 6 1
 7 0
 8 0
 9 1
10 1
11 0
12 0
13 0
14 1
15 1
16 0
17 0
18 0
19 0
20 0


1

জাপট , 6 5 বাইট

k ʥ2

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


ব্যাখ্যা

অন্যান্য উত্তরগুলির বেশিরভাগের মতোই একই রকম: kমূল কারণগুলির অ্যারে Êপায়, তার দৈর্ঘ্য হয় এবং এর ¥সাথে সাম্যের জন্য পরীক্ষা করে 2


÷k o)jএছাড়াও কাজ করে, দুর্ভাগ্যক্রমে এটি একই দৈর্ঘ্য :-(
ইটিএইচ প্রডাকশনগুলি

0

পার্ল 6 , 43 বাইট

{my \f=first $_%%*,2..$_;?f&&is-prime $_/f}

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

fইনপুট আর্গুমেন্টের 1 টির চেয়ে বড় ক্ষুদ্রতম ফ্যাক্টর $_, বা Nilযদি $_1 হয় তবে ফাংশনের রিটার্ন মানটি fসত্য ( সত্য, যদি না Nil) সত্য হয় এবং ফ্যাক্টর দ্বারা বিভাজিত ইনপুট আর্গুমেন্টটি প্রধান হয়।

যদি $_নিজেই প্রাইম হয় তবে এর fসমান হবে $_এবং $_ / fএটি 1, যা প্রধান নয়, সুতরাং সূত্রটি সেই ক্ষেত্রেও কাজ করে works

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