函式形參為結構形式
struct Point {double x,y;};
double dist(struct Point a,struct Point b){
return hypot(a.x-b.x,a.y-b.y);
}
避開struct 寫法
typedef struct {double x,y;}Point;
double dist(Point a,Point b){
return hypot(a.x-b.x,a.y-b.y);
}
素數判定
int is_prime(int n){
if(n<=1)return 0;
int m=floor(sqrt(n)+0.5);
for(int i=2;i<=m;i++){
if(n%i==0)return 0;
}
return 1;
}
uj5u.com熱心網友回復:
素數判定描述
素數又稱質數,它的定義就是:只能被1和它自身整除的、大于1的整數稱為素數。
思路
根據素數的定義,對n<=1的情況直接進行特判;若n>1,如果你說用for回圈從2到n掃描一遍,那的確是對的,但是可以只從2掃描到sqrt(n)就可以了,因為n/x=y和n/y=x相當于重復判斷了,演算法效率就大大降低了。我在劉汝佳老師的著作上面看到他是這樣計算上邊界的:int m=floor(sqrt(n)+0.5),他說這樣是為了避免浮點誤差,后來我仔細想了一下,如果當n特別大時,可能會由于精度誤差,造成本應是整數的變成x.9999或者x.9998等等,所以要特別注意。
劉汝佳老師的代碼如下
int is_prime(int n)
{
if(n<=1) return 0;
int m=floor(sqrt(n)+0.5);
for(int i=2;i<=m;i++)
if(n%i==0) return 0;
return 1;
}
ps:floor是一個上取整函式,例如:x=3.14,floor(x)=3 ;y=9.99999,floor(y)=9。
uj5u.com熱心網友回復:
轉自https://www.cnblogs.com/flyawayl/p/8305615.html轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/19139.html
標籤:基礎類
上一篇:打開緯地交通,出現ZJtMain.arx ARX未處理的例外 怎么處理?
下一篇:救濟金發放 uva133
