當前位置:編程學習大全網 - 網站源碼 - 因數分解源碼,程序運行很慢,碰到4000000009,這樣大的數得好長時間才能得出結果,請問該如何優化?如下:

因數分解源碼,程序運行很慢,碰到4000000009,這樣大的數得好長時間才能得出結果,請問該如何優化?如下:

已改,看註釋

#include <iostream>

#include <math.h>

using namespace std;

int main()

{

cout<<"適用於"<<sizeof(unsigned long int)*8<<"位"<<'\n';

cout<<"請輸入壹個4以上,2^"<<sizeof(unsigned long int)*8<<"以下的整數,"<<'\n'<<"本程序將它因數分解"<<'\n';

unsigned long int i=2,k=0,r;

cin>>r;

if(r<4||r>4294967295)

{

cout<<"出錯";

}

else

{

for(int i=2;i<=sqrt((double)r);i++) //其實不需要循環到r,只要循環到根號r就可以了。

{

if((r%i)==0&&1!=r)

{

cout<<i<<'\n';

r=r/i;

i--;

k++;

}

}

if(0==k)

{

cout<<r<<" 為質數";

}

else

{

cout<<r;

}

}

return 0;

}

  • 上一篇:如何才能將通達信的子指數翻轉180度?比如把MACD翻個底朝天
  • 下一篇:matlab怎麽調用hog函數
  • copyright 2024編程學習大全網