目錄
文法
演算法
方法1:樸素方法
Example
範例
輸出
Explanation
解釋
方法二:質因數分解
結論
首頁 後端開發 C++ 在C++中,將以下內容翻譯為中文:計算在L和R之間與P互質的數字數

在C++中,將以下內容翻譯為中文:計算在L和R之間與P互質的數字數

Aug 26, 2023 pm 09:33 PM
r 計算 l 互質 數量。

在C++中,將以下內容翻譯為中文:計算在L和R之間與P互質的數字數

在電腦程式設計領域,找到給定範圍內與特定數字互質的數字數量可能是常見的任務。互質數,也稱為相對質數,是指除了1以外沒有其他公因數的數字。在本文中,我們將透過使用C 語言來探討在給定整數L和R之間找到與特定數字P互質的數字數。

文法

我們將首先概述我們在接下來的程式碼範例中將使用的方法的語法 -

int countCoprimes(int L, int R, int P);
登入後複製

演算法

我們將使用的演算法來計算互質數的數量如下所示−

  • 將變數 count 初始化為 0,用於儲存互質數的計數。

  • 從L開始迭代每個數字num,直到R。

  • 對於每個 num,檢查它是否與 P 互質。

  • 如果num和P互質,則將計數增加1。

  • 傳回count的最終值。

方法1:樸素方法

我們將要討論的第一種方法是樸素方法。為了使用歐幾裡得演算法來驗證與P的互質性,這種方法需要透過迭代來檢查指定範圍內的每個數字。

Example

的中文翻譯為:

範例

#include <iostream>

int countCoprimes(int L, int R, int P) {
   int count = 0;
   for (int num = L; num <= R; num++) {
      int a = num;
      int b = P;
      while (b != 0) {
         int temp = b;
         b = a % b;
         a = temp;
      }
      if (a == 1)
         count++;
   }
   return count;
}

int main() {
   int L = 1; // Set the starting range value
   int R = 100; // Set the ending range value
   int P = 7; // Set the value of P
   
   int result = countCoprimes(L, R, P);
    
   std::cout << "Count of numbers between " << L << " and " << R << " coprime with " << P << ": " << result << std::endl;
   
   return 0;
}
登入後複製

輸出

Count of numbers between 1 and 100 coprime with 7: 86
登入後複製
登入後複製

Explanation

的中文翻譯為:

解釋

countCoprimes函數接受三個參數:L(起始範圍值),R(結束範圍值)和P(P的值)。

在countCoprimes函數內部,我們初始化一個變數count為0,它將儲存互質數的數數。

for迴圈迭代從L到R的每個數字num。

在迴圈中,我們分別將變數a和b初始化為num和P。

我們在while循環中使用歐幾里德演算法,透過重複交換和執行模運算來找到a和b的最大公約數(GCD)。

如果GCD(儲存在a中)等於1,這表示num和P是互質的。在這種情況下,我們增加計數變數。

我們透過仔細迭代所有數字來最終確定我們的計數值,並在完成後將其返回。

主要功能周到地為L、R和P變數分配合適的值。

然後我們使用提供的值來呼叫countCoprimes函數,並將結果儲存在result變數中。

最後,我們顯示結果,即在L和R之間與P互質的數字的計數。

方法二:質因數分解

這種策略涉及利用 P 的質因數分解以精確計算落在 L 和 R 之間的互質整數的數量。

Example

的中文翻譯為:

範例

#include <iostream>
#include <unordered_set>

int countCoprimes(int L, int R, int P) {
   std::unordered_set<int> factors;
   int tempP = P;

   for (int i = 2; i * i <= tempP; i++) {
      while (tempP % i == 0) {
         factors.insert(i);
         tempP /= i;
      }
   }

   if (tempP > 1)
      factors.insert(tempP);

   int count = 0;
   for (int num = L; num <= R; num++) {
      bool isCoprime = true;
      for (int factor : factors) {
         if (num % factor == 0) {
            isCoprime = false;
            break;
         }
      }
      if (isCoprime)
         count++;
   }

   return count;
}

int main() {
   int L = 1; // Set the starting range value
   int R = 100; // Set the ending range value
   int P = 7; // Set the value of P

   int result = countCoprimes(L, R, P);

   std::cout << "Count of numbers between " << L << " and " << R << " coprime with " << P << ": " << result << std::endl;

   return 0;
}
登入後複製

輸出

Count of numbers between 1 and 100 coprime with 7: 86
登入後複製
登入後複製

Explanation

的中文翻譯為:

解釋

countCoprimes函數接受三個參數:L(起始範圍值),R(結束範圍值)和P(P的值)。

我們建立一個無序因子集合來儲存P的質因子。我們將一個暫存變數tempP初始化為P。

我們從2迭代到tempP的平方根。如果tempP可以被i整除,我們將i加到因子集合中,並將tempP除以i,直到tempP不再能被i整除。

如果上述循環後tempP大於1,表示它本身是質數,應該加到因子中。

我們將變數count初始化為0,它將儲存互質數的計數。

我們迭代遍歷從L到R的每個數字num,並檢查它是否可以被集合factors中的任何一個因子整除。如果可以,我們將其標記為非互質。

完成所有數字的迭代後,將返回結果計數作為最終值。至於主函數,它使用指定的值初始化L、R和P。

然後我們使用提供的值來呼叫countCoprimes函數,並將結果儲存在result變數中。

最後,我們顯示結果,即在L和R之間與P互質的數字的計數。

結論

在指定的範圍L-R內計算互質數,並且滿足特定值P,對於程式設計師來說是一個不錯的挑戰 - 但是在程式碼層面上,最佳的方法是什麼?作為本文的一部分,我們深入研究了兩個C 使用案例,這些案例在解決此類問題時提供了真正的效率。首先,透過迭代在目標區間內的所有值,並使用歐幾里德演算法檢查這些數字是否符合為互質數;另外,還有使用歐拉函數方法,該方法使用了最佳化策略。無論是哪種方法,能否充分發揮其優勢很大程度上取決於上下文因素,例如您選擇的數字和指定的區間,但在兩種可能的方法之間做出明智的選擇,確實可以加快整體程式的執行速度。對於希望在他們的技術技巧和創造性問題解決能力中增加技術精湛的編碼人員來說,透過這些方法使用C 來掌握互質數計數可能正是他們所需要的。

以上是在C++中,將以下內容翻譯為中文:計算在L和R之間與P互質的數字數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
CUDA之通用矩陣乘法:從入門到熟練! CUDA之通用矩陣乘法:從入門到熟練! Mar 25, 2024 pm 12:30 PM

通用矩陣乘法(GeneralMatrixMultiplication,GEMM)是許多應用程式和演算法中至關重要的一部分,也是評估電腦硬體效能的重要指標之一。透過深入研究和優化GEMM的實現,可以幫助我們更好地理解高效能運算以及軟硬體系統之間的關係。在電腦科學中,對GEMM進行有效的最佳化可以提高運算速度並節省資源,這對於提高電腦系統的整體效能至關重要。深入了解GEMM的工作原理和最佳化方法,有助於我們更好地利用現代計算硬體的潛力,並為各種複雜計算任務提供更有效率的解決方案。透過對GEMM性能的優

word文檔怎麼計算加減乘除 word文檔怎麼計算加減乘除 Mar 19, 2024 pm 08:13 PM

WORD是一個強大的文字處理器,我們可以利用word進行各種文字的編輯,在Excel表格當中,我們已經熟練了加減乘數的運算方法,那麼如果需要在Word表格裡,計算數值的加減乘數,該如何操作呢,難道只能用計算機計算嗎?答案當然是否定的,WORD也同樣可以完成。今天小編就來教大家如何在Word文件的表格當中,運用公式計算加減乘除等基本運算,一起來學習一下吧。那麼,今天就讓小編具體示範一下,WORD文件怎麼計算加減乘除?第一步:開啟一個WORD,點選工具列【插入】下的【表格】,在下拉式選單當中插入一

如何使用Python的count()函數計算清單中某個元素的數量 如何使用Python的count()函數計算清單中某個元素的數量 Nov 18, 2023 pm 02:53 PM

如何使用Python的count()函數計算清單中某個元素的數量,需要具體程式碼範例Python作為一種強大且易學的程式語言,提供了許多內建函數來處理不同的資料結構。其中之一就是count()函數,它可以用來計算清單中某個元素的數量。在本文中,我們將詳細介紹如何使用count()函數,並提供具體的程式碼範例。 count()函數是Python的內建函數,用來計算某

使用行列式計算三角形面積的Java程序 使用行列式計算三角形面積的Java程序 Aug 31, 2023 am 10:17 AM

簡介使用行列式計算三角形面積的Java程序是一個簡潔且有效率的程序,可以根據給定三個頂點的座標來計算三角形的面積。該程式對於學習或使用幾何的任何人都非常有用,因為它演示瞭如何在Java中使用基本算術和代數計算,以及如何使用Scanner類讀取使用者輸入。程式提示使用者輸入三角形三個點的座標,然後將其讀入並用於計算座標矩陣的行列式。使用行列式的絕對值來確保面積始終為正,然後使用公式計算三角形的面積並顯示給使用者。該程式可以輕鬆修改以接受不同格式的輸入或執行附加計算,使其成為幾何計算的多功能工具。決定因素行列

在Java中遞歸地計算子字串出現的次數 在Java中遞歸地計算子字串出現的次數 Sep 17, 2023 pm 07:49 PM

給定兩個字串str_1和str_2。目標是使用遞歸過程計算字串str1中子字串str2的出現次數。遞歸函數是在其定義中呼叫自身的函數。如果str1是"Iknowthatyouknowthatiknow",str2是"know"出現次數為-3讓我們透過範例來理解。例如輸入str1="TPisTPareTPamTP",str2="TP";輸出Countofoccurrencesofasubstringrecursi

如何使用C#中的Math.Pow函數計算指定數的冪次方 如何使用C#中的Math.Pow函數計算指定數的冪次方 Nov 18, 2023 am 11:32 AM

在C#中,有一個Math類別庫,其中包含許多數學函數。其中包括計算冪次方的函數Math.Pow,它可以幫助我們計算指定數的冪。 Math.Pow函數的用法非常簡單,只需要指定底數和指數就可以了。其語法如下:Math.Pow(base,exponent);其中base表示底數,exponent表示指數。此函數傳回double類型的結果,即冪次方的計算結果。下面讓

Java程式範例,用於計算總分和百分比 Java程式範例,用於計算總分和百分比 Sep 11, 2023 pm 06:01 PM

我們將示範如何使用Java程式計算總分和百分比。總分是指所有可用分數的總和,而術語百分比是指計算分數除以總分並乘以所得的數字100。 percentage_of_marks=(obtained_marks/total_marks)×100範例1這是一個Java程序,用來示範如何計算總分和百分比。 //JavaProgramtodemonstratehowisTotalmarksandPercentagescalculatedimportjava.io.*;publicclassTotalMarks_

PHP日期處理技巧:如何使用PHP計算日期之間的月份差? PHP日期處理技巧:如何使用PHP計算日期之間的月份差? Mar 20, 2024 am 11:24 AM

PHP日期處理技巧:如何使用PHP計算日期之間的月份差?日期處理在Web開發中是一個非常常見的需求,特別是在需要和時間相關的業務邏輯中。在PHP中,計算日期之間的月份差可以透過一些方法實現。本文將介紹如何使用PHP來計算兩個日期之間的月份差,並提供具體的程式碼範例。方法一:使用DateTime類別PHP的DateTime類別提供了豐富的日期處理方法,包括計算日期之

See all articles