পুনরাবৃত্তি দশমিক খুঁজে পাওয়ার কার্যকর উপায় কী


24

আমি দুটি পূর্ণসংখ্যার পুনরাবৃত্তি দশমিক অংশ aএবং bকোথায় খুঁজে পেতে জাভায় একটি দক্ষ অ্যালগরিদম সন্ধান করার চেষ্টা করছি a/b

যেমন। 5/7 = 0.714258 714258 ....

আমি বর্তমানে দীর্ঘ বিভাগ পদ্ধতি সম্পর্কে জানি।


2
সুতরাং আপনার কাছে একটি = 5 এবং বি = 7 রয়েছে এবং আপনি সহজেই যথেষ্ট পরিমাণে ভাসমান পয়েন্টে / বি গণনা করতে পারেন, তবে আপনি কী জানতে চান এটি 6 দশমিক স্থানের পরে পুনরাবৃত্তি করে?
স্পার

উত্তর:


10

আমি বিশ্বাস করি যে এখানে দুটি সাধারণ পন্থা রয়েছে, আপনি মূলত দীর্ঘস্থায়ী পুনরাবৃত্তি স্ট্রিংটি সন্ধান করতে পারেন, বা সংখ্যা তত্ত্বের সমস্যা হিসাবে এটি সমাধান করতে পারেন।

আমি দীর্ঘদিন ধরে এই সমস্যার মুখোমুখি হয়েছি, তবে একটি বিশেষ কেস (1 / n) সমস্যা # 26 প্রকল্পের ইউলারে, সুতরাং আপনি সেই নির্দিষ্ট নামের জন্য কার্যকর সমাধানগুলি অনুসন্ধান করে আরও তথ্য সন্ধান করতে পারবেন। একটি অনুসন্ধান আমাদের এলি বেন্ডারস্কির ওয়েবসাইটে নিয়ে যায়, যেখানে সে তার সমাধান ব্যাখ্যা করে । ম্যাথওয়ার্ল্ডের দশমিক বিস্তৃতি পৃষ্ঠা থেকে কিছু তত্ত্ব এখানে রইল :

যে কোনও অনিয়মিত ভগ্নাংশ m/nপর্যায়ক্রমিক এবং এর একটি সময়কাল lambda(n)স্বতন্ত্র থাকে mযা বেশিরভাগ n-1 অঙ্কে দীর্ঘ হয়। যদি nঅপেক্ষাকৃত থেকে 10 প্রধানমন্ত্রী তারপর সময়ের, lambda(n)এর m/nএকটি ভাজক হয় phi(n)এবং সর্বাধিক হয়েছে phi(n)সংখ্যা, যেখানে phitotient ফাংশন। দেখা যাচ্ছে যে 10 (মোড ) (গ্লিশার 1878, লেহমার 1941) lambda(n)এর গুণক ক্রমn । যৌক্তিক সংখ্যার দশমিক বিস্তারের পুনরাবৃত্ত অংশে অঙ্কের সংখ্যাটিও তার ডিনোমিনেটরের গুণক ক্রম থেকে সরাসরি পাওয়া যায়।

আমার নম্বর তত্ত্বটি এই মুহুর্তে কিছুটা মরিচা, তাই আমি সবচেয়ে ভাল যা করতে পারি তা আপনাকে সেই দিকে নির্দেশ করা।


8

আসুন n < dএবং আপনি এর পুনরাবৃত্তি অংশটি বের করার চেষ্টা করছেন n/dpপুনরাবৃত্তি অংশে অঙ্কের সংখ্যা হওয়া যাক : তারপরে n/d = R * 10^(-p) + R * 10^(-2p) + ... = R * ((10^-p)^1 + (10^-p)^2 + ...)। বন্ধনী অংশটি জ্যামিতিক সিরিজ, সমান 1/(10^p - 1)

তাই n / d = R / (10^p - 1)। পেতে পুনরায় সাজান R = n * (10^p - 1) / d। আর খুঁজে পেতে p1 থেকে অনন্তের দিকে লুপ করুন এবং dসমানভাবে ভাগ হয়ে যাওয়ার সাথে সাথে থামুন n * (10^p - 1)

পাইথনে এখানে একটি বাস্তবায়ন রয়েছে:

def f(n, d):
    x = n * 9
    z = x
    k = 1
    while z % d:
        z = z * 10 + x
        k += 1
    return k, z / d

( kপুনরাবৃত্ত ক্রমের দৈর্ঘ্যের উপর নজর রাখে, উদাহরণস্বরূপ আপনি 1/9 এবং 1/99 এর মধ্যে পার্থক্য করতে পারবেন)

মনে রাখবেন যে দশমিক প্রসারিত সীমাবদ্ধ থাকলে এই বাস্তবায়নটি (বিদ্রূপাত্মকভাবে) চিরকালের জন্য লুপ হয়ে যায়, তবে এটি অসীম হলে শেষ হয়! আপনি এই কেসটি পরীক্ষা করতে পারেন, তবে, কারণ n/dকেবলমাত্র সীমাবদ্ধ দশমিক প্রতিনিধিত্ব থাকবে যদি এর সমস্ত প্রধান উপাদানগুলি d2 বা 5 নয় তবে উপস্থিত থাকে n


1
এই উত্তরটি সঠিক বলে মনে হচ্ছে। পদ্ধতি "নিয়ম" নিম্নলিখিত উপর ভিত্তি করে: 0.123123... = 123/999 0.714258714258... = 714258/999999 (=5/7)ইত্যাদি
থেকে আসা

4
এটি 1/6 বা
5/12 এর

1
@ ইরজিপিটিয়া আমি একই রকম কিছু তৈরি করেছি, তবে সমস্ত ক্ষেত্রে (পূর্ণসংখ্যা বিভাগ সহ) কাজ করছি। চেক আউট করুন: কোডেপ্যাড.অর্গ.এইচকেবোএফপিডি 2
টিগ্রান সালুয়েভ


2

দীর্ঘ বিভাগ? : /

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


4
"এটিকে একটি স্ট্রিংয়ে পরিণত করুন" স্ট্রিংয়ের পুনরাবৃত্তি অংশের দুটি অনুলিপি গণনা করার জন্য স্বেচ্ছাচারিত নির্ভুলতার গণনা এবং খুব দীর্ঘ স্ট্রিংয়ের প্রয়োজন হতে পারে (এবং কখন গণনা বন্ধ করা যায় তা আপনি কীভাবে জানবেন? .121212312121231212123 ... সমস্যা হবে)
স্পার

@ স্পার পুনরাবৃত্তির দৈর্ঘ্য সর্বকালের চেয়ে ছোট is

@ মিশেলটি আমি এটি সম্পর্কে অবগত ছিলাম না। যদি সত্য হয় তবে যথার্থতা যথাযথভাবে "স্বেচ্ছাসেবী" নয়, তবে ডিনোমিনেটরের উপর নির্ভর করে নির্বিচারে উচ্চতর হতে পারে।
স্পার

@ স্পার ম্যাথ.স্ট্যাকেক্সেঞ্জাওয়েশনস / সেকশনস / 298844 /… যদিও আমি সবকিছু 2 / টাইটেল / রেচারিং + ডিজিটাল আরও পাঠযোগ্য find

আমি মনে করি না যে আপনি যে অ্যালগরিদমের সাথে লিঙ্ক করেছেন সেটি কোনও পরিবর্তন ছাড়াই কাজ করবে। এর মধ্যে পুনরাবৃত্তি অন্তর্ভুক্ত যা ওভারল্যাপ হয় এবং এটি সমস্ত স্ট্রিং জুড়ে অনুসন্ধান করে (কেবল পরপর ম্যাচের জন্য নয়)। উদাহরণস্বরূপ, "কলা" -র দীর্ঘতম পুনরাবৃত্ত সাবস্ট্রিং হ'ল "আনা"।
ওয়েব_ডিজাইনার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.