C++算法題:
按題目的意思n<=2*10^9
圖中紅色框內代碼i*j是有可能超過這個範圍的,造成整數最大溢出得不到正確結果。應該改為壹個for循環,從最大的數開始往小的數搜索,不要用乘法,用除法。
for(int i = n-1; n >= sqrt(n); i--)
{
if(n%i==0)
maxNum= i;
break;
}
當然這些要保證輸入的n壹定得滿足只有兩個質數相乘等於n,不然需要增加判斷是否為質數。