c 分解質因數過程,C 分解質因數的程式,請高手優化一下。

2021-12-23 04:51:59 字數 4376 閱讀 8737

1樓:南霸天

1、分解質因數定義:

每個合數都可以寫成幾個質數相乘的形式。其中每個質數都是這個合數的因數,叫做這個合數的分解質因數。分解質因數只針對合數。

2、分解質因數方法:

分解質因數的算式叫短除法。求乙個數分解質因數,要從最小的質數除起,一直除到結果為質數為止。

3、分解質因數程式設計:

#include

using namespace std;

class qualityfactor

private:

int n;

public:

void qfcontract(long a) //用短除法對合數進行分解

n = 0; //初始化

while(a>1)

for(int i=2;i<=a;i++)if(a%i==0) //短除法

a = a/i;

cout << i << "   "; //輸出因子break;

cout << endl;

int main(int argc, char* ar**)qualityfactor qf;

long number;

cout << "輸入要解的合數" << endl;

cin>>number;

qf.qfcontract(number);

system("pause");

return 0;

執行結果:

2樓:匿名使用者

樓主俺有個更快的(樓主的不是分解質因數(分解8後會得2*4).

#include

#include

#include

#include

using namespace std;

int main()

, b = , d = ;

char cont;

clock_t t;

dot = clock() - t;

for (int p = 1; p < (c.size() / 2); p++)

cout << "\n\ntime used = " << t << " ms\ncontinue? (y/n)";

cin >> cont;

cout << endl;

} while (cont == 'y');

return 0;

if(n % p == 0)

goto start;}}

if (n % 2 == 0)

goto start2;

}if (n % 3 == 0)

if (n % 3 == 0)

goto start3;

}while (j <= int (sqrt(n) / 6))

if (n % l == 0)

goto start;}}

j++;

}if (n != 1)

if (n % 2 == 0)

goto start2;

}if (n % 3 == 0)

if (n % 3 == 0)

goto start3;

}if (n % 5 == 0)

if (n % 5 == 0)

goto start5;

}while (j <= int (sqrt(n) / 30))

if (n % l == 0)

goto start;}}

j++;

}if (n != 1)

if (n % 2 == 0)

goto start2;

}if (n % 3 == 0)

if (n % 3 == 0)

goto start3;

}if (n % 5 == 0)

if (n % 5 == 0)

goto start5;

}if (n % 7 == 0)

if (n % 7 == 0)

goto start7;

}if (n % 11 == 0)

if (n % 11 == 0)

goto start11;

}while (j <= int (sqrt(n) / 2310))

if (n % l == 0)

goto start;}}

j++;

}if (n != 1)}

3樓:

你把cout前還有else前用大括號括起來,作為乙個程式段,不然if到cout句就終止了,後面的else沒有匹配的if句。

4樓:匿名使用者

#include

#include

using namespace std;

int main()

else

c++;

} cout<

while (1);

return 0;

}結果:

please input a number輸入兩個數字用空格分割

5樓:匿名使用者

#include

using namespace std;

int main()

else

} cout<

while (1);

return 0;}

怎樣用c++編寫將乙個整數分解質因數的程式?

6樓:a懂

#include

#include

//試用除法判斷乙個數是否為素數

bool isprime(int n)

void factor(int n)

7樓:皇家救星

fun(int m)//m是待分解的整數

else i++;}

8樓:兔弟蛇哥

//貌似樓上幾位都忘了重複測試i能否整除目標整數?

#include

using namespace std;

void main()

if(n==1) break;

}if(count==0) cout<

cout<

9樓:匿名使用者

c++:分解質因數的程式,請高手優化一下。

10樓:匿名使用者

#include

using namespace std;

int main()

else

}if(i!=1)

cout<

}return 0;

}這麼些就行 那個*是由於最後i=1導致cout<

程式原理就是從j=i開始加1 並試是否能整除 能就是乙個質因數(第一次為能找到的最小乙個 後面也是) 結果繼續除 直到除盡為止

什麼是分解質因數,什麼叫分解質因數

每個合數都可以寫成幾個質數相乘的形式,其中每個質數都是這個合數的因數,叫做這個合數的分解質因數。分解質因數只針對合數。什麼叫分解質因數 把乙個合數用質因數相乘的形式表示出來就是我們所講的分解質因數。由於每個合數都可以寫成幾個質數相乘的形式,其中每個質數都是這個合數的因數,只有合數才可以分解質因數,分...

分解質因數題目 分解質因數中普通但是不簡單的題目?

2730 2 3 5 7 13 最小是13,14,15 13 14 14 15 13 15 182 210 195 587cm 2 所以最小表面積是2 587 1174cm 2 分解質因數中普通但是不簡單的題目?這個可以用反證法,x,a,b,c均為正整數,其中a b 假設x第一輪開始,從2開始除到a...

什麼是因數分解?什麼是分解質因數

舉個簡單例子,12的分解質因數可以有以下幾種 12 2 2 3 4 3 1 12 2 6,其中1,2,3,4,6,12都可以說是12的因數,即相乘的幾個數等於乙個自然數,那麼這幾個數就是這個自然數的因數。2,3,4中,2和3是質數,就是質因數,4不是質數。那麼什麼是質數呢?就是不能再拆分為除了1和它...