تجزیه اعداد طبیعی
در نظریه اعداد به فرایند شکستن یک عدد مرکب و نوشتن آن به صورت حاصل ضرب چند عدد اول تجزیه اعداد طبیعی گفته می‌شود. هیچ الگوریتم کارآمدی برای تجزیهٔ اعداد خیلی بزرگ شناخته نشده. تلاشی که اخیراً برای تجزیه یک عدد ۲۰۰ رقمی صورت گرفته ۱۸ ماه به طول انجامید. دشواری این مسئله در برخی الگوریتم‌های رمزنگاری مانند آر‌اس‌ای می‌باشد. بسیاری از زمینه‌های ریاضیات و علوم رایانه، از جمله رایانش کوانتومی و نظریه‌ی جبری اعداد، برای بهبود روش حل این مسئله به کار گرفته شده‌اند. تجزیه همه اعداد با طول یکسان به یک اندازه مشکل نیست. مشکل‌ترین مثال‌ها (برای روش‌های فعلی) هستند. اعداد نیمه اول به اعدادی گفته می‌شود که می‌توان آنها را به صورت ضرب دو عدد اول نوشت. وقتی دو عدد بسیار بزرگ باشند و به‌طور تصادفی انتخاب شده باشند و مقدار نسبتاً نزدیکی داشته باشند حتی سریع‌ترین الگوریتم‌ها بروی سریع‌ترین رایانهها به قدری زمان می‌گیرند که در واقع ناکارآمد هستند.
طبق قضیه اساسی حساب هر عدد طبیعی بزرگتر از ۱ یک تجزیه منحصربه‌فرد به اعداد اول دارد. با این وجود قضیه اساسی حساب هیچ راهی برای بدست آوردن این تجزیه در اختیار نمی‌گذارد و فقط وجود این تجزیه را تضمین می‌کند. از این رو روش‌های بسیاری برای این کار وجود دارد، یکی از این روش‌ها برای تجزیه اعداد طبیعی نسبتاً کوچک روش نمودار درختی می‌باشد. در این روش عدد به حاصل ضرب دو عدد تقسیم می‌شود و اعداد به دست آمده هم دوباره به همین ترتیب تا جایی که همهٔ اعداد به دست آمده اول باشند. به عنوان مثال عدد ۱۸۰ به این روش تجزیه می‌گردد: بنابرین تجزیه عدد۱۸۰ به این صورت می‌باشد:
٢. ٢. ٣. ٣. ٥=١٨٠ سختی این مسئله در دل بسیاری از سیستم‌های رمز نگاری حس می‌شود. وجود یک الگوریتم سریع برای تجزیه اعداد طبیعی به معنی امن نبودن آر‌اس‌ای خواهد بود. بعضی سیستم‌های رمز نگاری مانند و بلام بلام شاپ اطمینان بیشتری می‌دهند. در واقع، هر روشی برای شکستن این روش‌های رمزنگاری می‌تواند برای ساخته شدن یک الگوریتم سریع تجزیه اعداد اول مورد استفاده قرار گیرد. به همان اندازه که تجزیه اعداد طبیعی سخت می‌باشد این سیستم‌های رمز نگاری قوی هستند.
مسئله لگاریتم گسسته یک مسئله سخت مشابه و با کاربردهای رمزنگاری است.
تجزیه اعداد طبیعی به غیر از رمزنگاری کاربردهای زیادی در الگوریتم‌ها دارد. برای مثال وقتی عدد طبیعی n به صورت ضرب عوامل اول باشد محاسبه سریع را ممکن می‌سازد، همچنین حافظه کمتری اشغال می‌کند زیرا می‌توان عدد را به صورت ضرب عوامل اول نوشت بدون آنکه اطلاعاتی از دست برود؛ که به‌طور مثال توسط استفاده شده‌است.
"همچنین ببینید: رکوردهای تجزیه اعداد طبیعی"
در عمل، سخت‌ترین اعداد برای تجزیه میان اعداد b بیتی، آنهایی هستند که برابر با حاصل‌ضرب دو عدد اول با اندازه‌ی مشابه هستند. به همین دلیل، از همین اعداد در کاربردهای رمزنگاری استفاده می‌شود. در فوریه‌ ۲۰۲۰، عدد که یک عدد ۸۲۹ بیتی با ۲۵۰ رقم است، با محاسباتی زیاد و بهینه‌سازی‌های فراوان الگوریتم‌های تجزیه‌ی اعداد، با موفقیت مورد تجزیه قرار گرفت و این بزرگ‌ترین عدد نیمه‌اولی است که تا مه ۲۰۲۱ تجزیه شده است.
اگر یک عدد بزرگ b بیتی نیمه اول باشد، هیچ الگوریتمی برای تجزیه آن با (("b" که k عددی ثابت است پیدا نشده. الگوریتم‌هایی وجود دارند که از (((1+ε) به ازای εهای مثبت، سریع‌تر هستند؛ یعنی هستند. بهترین الگوریتم از نظر زمانی برای ( (GNFS است، که برای اعداد b بیتی زمان اجرا آن به صورت زیر می‌باشد:
formula_1
برای کامپیوترهای معمولی GNFS بهترین الگوریتم برای اعداد بزرگتر از ۱۰۰ رقم است. اگرچه پیتر شر در سال ۱۹۹۴ الگوریتمی پیدا کرد که از نظر زمانی چند جمله‌ای بود؛ و این بسیار مهم خواهد بود وقتی که یک رایانه‌‌ی کوانتومی بزرگ ساخته شود. الگوریتم شُر (Shor) از (("b" است و از (("b" فضا، برای یک عدد ورودی b بیتی می‌گیرد. در سال ۲۰۰۱ اولین رایانه‌ی کوانتومی ۷ کیو بیتی نخستین بار الگوریتم شُر را اجرا و عدد ۱۵ را تجزیه کرد.
زمان اجرای یک الگوریتم تک‌منظوره بستگی به فاکتورهای ناشناختهٔ آن دارد: اندازه، فرم مخصوص و غیره. اینکه دقیقاً زمان اجرای الگوریتم به چه فاکتورهایی بستگی دارد بین الگوریتم‌های مختلف فرق می‌کند. برای مثال، آزمون تقسیم برای هدف مخصوصی در نظر گرفته شده چون که زمان اجرای آن تقریباً متناسب با اندازهٔ کوچک‌ترین عامل اول آن است.زمان اجرای الگوریتم‌های چندمنظوره فقط به اندازهٔ عددِ طبیعیِ موردِ تجزیه بستگی دارد. این مدل از الگوریتم‌ها برای تجزیه اعداد آر‌اس‌ای استفاده می‌شود. بیشتر الگوریتم‌های تجزیه بر پایهٔ روش هستند.