#include <iostream>#include <string>#include <cmath>usingnamespacestd;boolisPrime(longlongnumber){if(number<=1)returnfalse;if(number==2)returntrue;if(number%2==0)returnfalse;for(longlongi=3;i<=sqrt(number);i+=2){if(number%i==0)returnfalse;}returntrue;}intmain(){stringlargeNumber;cout << "Enter a large number: ";cin >> largeNumber;intprimeSubstringCount=0;for(size_ti=0;i < largeNumber.length();++i){for(size_tj=i+1;j<=largeNumber.length();++j){stringsubstring=largeNumber.substr(i,j-i);longlongnumber=stoll(substring);if(isPrime(number)){primeSubstringCount++;cout << "Prime substring: " << substring << endl;}}}cout << "Total number of prime substrings: " << primeSubstringCount << endl;return0;}
レスポンス
C++ コードは、大きな数値内の素数のサブ文字列を効率的にチェックします。これを Java に変換するには、非常に大きな数値を処理するデータ型を慎重に検討する必要があります。この目的で BigInteger を使用します。Java の同等コードは次のとおりです。
importjava.math.BigInteger;importjava.util.Scanner;publicclassPrimeSubstrings{publicstaticbooleanisPrime(BigIntegernumber){if(number.compareTo(BigInteger.ONE)<=0)returnfalse;if(number.equals(BigInteger.valueOf(2)))returntrue;if(number.mod(BigInteger.valueOf(2)).equals(BigInteger.ZERO))returnfalse;for(BigIntegeri=BigInteger.valueOf(3);i.compareTo(number.sqrt())<=0;i=i.add(BigInteger.valueOf(2))){if(number.mod(i).equals(BigInteger.ZERO))returnfalse;}returntrue;}publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);System.out.print("Enter a large number: ");StringlargeNumber=scanner.nextLine();intprimeSubstringCount=0;for(inti=0;i < largeNumber.length();++i){for(intj=i+1;j<=largeNumber.length();++j){Stringsubstring=largeNumber.substring(i,j);BigIntegernumber=newBigInteger(substring);if(isPrime(number)){primeSubstringCount++;System.out.println("Prime substring: " << substring);}}}System.out.println("Total number of prime substrings: "+primeSubstringCount);scanner.close();}}
コンバージョン プロセスの説明:
ヘッダーと名前空間: C++ の #include ディレクティブは、Java の import ステートメントに置き換えられます。Java では using namespace std; は必要ありません。完全修飾名(BigInteger.valueOf(2))。
データ型: 重要な変更は、Java で long long の代わりに BigInteger を使用することです。これにより、オーバーフローの問題なしで任意の大きな数値を処理できます。これは、C++ コードが大きな入力を処理する機能に似ています。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2024-12-05 UTC。"],[],[]]