C 三種簡單方式計算N以內所有的素數

2021-10-11 19:38:57 字數 1278 閱讀 7368

sushu1(…)函式:

粗暴遍歷演算法,判斷i是不是素數時,從2到i取餘,餘數為0只有兩個的為素數,count++。

sushu2(…)函式:

對i遍歷取餘是從2到(i-1),只要出現餘數為0直接判斷為素數,count++。

第一步對2取餘直接篩出除了2以外的所有偶數(不是素數),複雜度少一半,發現餘數為0直接退出也是對第一種演算法的優化。

shushu3(…)函式:

對i取餘的遍歷範圍從2到(i-1)變為2到(n的平方根),效率提高很明顯,原理不多贅述。種更好理解這種的演算法,可以是遍歷範圍從2到i/2。

用到了函式指標作為函式引數,用來在test()函式內計算**執行時間。

#include

#include

#include

#include

#include

#ifndef _clock_t_defined

typedef

long clock_t;

#define _clock_t_defined

#endif

#define clocks_per_sec ((clock_t)1000)

using

namespace std;

//統計n以內的所有素數

bool

isprime1

(int n)

//暴力演算法,時間複雜度o(n)

intsushu1

(int n)

//17402ms

return count;

}bool

isprime2

(int n)

//判斷出第三個因數後直接退出

return

true;}

intsushu2

(int n)

//1890ms

}return count;

}bool

isprime3

(int n)

return

true;}

intsushu3

(int n)

//15ms

}return count;

}typedef

int(

* sushu)

(int);

//函式指標型別的定義,可以理解為函式(指標)模板

void

test

(sushu s,

int n)

intmain()

C 三種繼承方式

公有繼承 public 私有繼承 private 保護繼承 protected 是常用的三種繼承方式。1.公有繼承 public 2.私有繼承 private 私有繼承的特點是基類的公有成員和保護成員都作為派生類的私有成員,並且不能被這個派生類的子類所訪問。3.保護繼承 protected 保護繼承...

C 三種繼承方式

繼承是使 可以復用的重要手段,也是物件導向程式設計的核心思想之一。簡單的說,繼承是指乙個物件直接使用另一物件的屬性和方法。繼承呈現了 物件導向程式設 計的層次結構,體現了 由簡單到複雜的認知過程。c 中的繼承關係就好比現實生活中的父子關係,繼承一筆財產比白手起家要容易得多,原始類稱為基類,繼承類稱為...

C 三種繼承方式

一 公有繼承 public 基類成員對派生類的可見性為 基類的公有成員和保護成員可見,基類的私有成員不可見。基類成員對派生類物件的可見性為 基類的公有成員可見,保護成員和私有成員不可見,即通過派生類的物件只能訪問基類的public成員。所以,在公有繼承時,派生類的物件可以直接訪問基類中的公有成員,派...