2012-07-22 76 views
0

我對C++很新穎,但我正在嘗試設置一個非常簡單的C++項目。下面你可以找到迄今爲止的代碼。但是我遇到的麻煩是數學函數p = n^2-8n+7;。任何建議如何我可以改善它?簡單的數學函數不起作用

#include <iostream> 
#include <stdio.h> 
using namespace std; 

int main() { 

/* Variable Declaration */ 
int p,n,i; 

for (n=0; n<100; n++) { 

/* Math Function */ 
p = n^2-8n+7; 

/* Check if prime */ 
for (i=2; i<p; i++) { 
    if (!(p%i)) break; 
    else cout << "(" << n << "," << p << ");" << endl; 
} 

} 

/* Ready */ 
printf("\n\n\a"); 
system("pause"); 
} 
+0

你應該看看C++數學和計算器數學的區別。 – chris 2012-07-22 17:06:53

+0

,我該如何解決? – 2012-07-22 17:07:35

+4

當你看透並且意識到C++沒有強大的運算符並且確實有一個乘法運算符時,它就變得很明顯。 – chris 2012-07-22 17:08:58

回答

8

您需要更改

n^2-8n+7; 

p = n * n - 8 *n + 7; 

你缺少*乘法,也代替^您可能需要mutliply兩次或使用POW功能

6

要得到廣場使用n*n而不是n^2^是按位異或運算符。

+1

爲了完整性,在那裏有一個'8n'作爲數字8加上'n'作爲後綴。 +1,如果你添加該部分英寸http://ideone.com/9c8l9 – chris 2012-07-22 17:09:45

+0

我錯過了..謝謝@chris – PermanentGuest 2012-07-22 17:14:16

5

運算符^不等於效能,而是二元運算符'XOR'。

對於n^2任一用途(N * N)或,對於較高的效力,所述預製 'POW' 功能,其在此處描述:http://www.cplusplus.com/reference/clibrary/cmath/pow/

對於示例,這將是POW(N,2 ); 012n8n也不行,你需要把它寫成'8 * n'。

+0

對於方形電源,爲了節省自己打字和世界從全球變暖浪費CPU週期在昂貴'pow()'函數(通常用大氣中的二氧化碳來支付),你應該用'n * n'去。 – lvella 2012-07-22 17:14:55

+0

@lvella這就是爲什麼我明確表示,即使一個普通的'for'循環具有相同的效果,它主要是'更高的效能'。我只是想讓他注意這個功能的存在。 – ATaylor 2012-07-22 17:16:18

+0

我不希望'pow(n,2)'實際上導致對'pow'的調用。 – Puppy 2012-07-22 17:39:08