C語言高效素數打表
埃式篩法素數打表
const int maxn = 10000; int vis[maxn]; int prim[maxn]; void fun() { int i, j; vis[0] = vis[1] = 1;//0,1是非素數 vis[2] = 0; int cnt = 0; for (i = 2; i < maxn; i++) { if (vis[i] == 0) { prim[cnt++] = i; } for (j = 0; (j < cnt) && (i*prim[j]) < maxn; j++) { vis[i*prim[j]] = 1; if (i%prim[j] == 0)break; } } }
注:上述程式碼將非素數標記為1。
相關推薦
C語言高效素數打表
埃式篩法素數打表 const int maxn = 10000; int vis[maxn]; int prim[maxn]; void fun() { int i, j; vis[0] = vis[1] = 1;//0,1是非素數 vis[2] = 0; int cnt =
資料結構--C語言--已知線性表中的元素以值遞增有序排列,並以單鏈表作儲存結構。試寫一高效演算法,刪除表中所有值大於mink且小於maxk的元素
#include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 #define LEN sizeof(struct LNode) struct LNode{ int data;//資料域 struct
一道素數打表的水題,順便記下打表高效方法
codeforces round 388 div2的A題 A. Bachgold Problem 題意問輸入的n最有有多少個素數加起來組成,素數可以重複使用,那這題用貪心,從2開始算起,因為你要求素數最多的話,肯定是越小的個數越多,做完之後,突然發現根本不用
C語言輸出素數表(1-100)&前100個
本來是想第二篇做雙鏈表的,今天看C和指標第四章,複習了以下之前做的素數輸出,三種不同方法,結果如下: 1.輸出1-100以內的素數: //這個比較簡單,不多做介紹,唯一注意的一點是for迴圈截止條件
素數打表高效算法
sizeof using mem 存儲 bool bre names space 註意 #include<cstring> using namespace std; bool vis[1000000]; //存儲某個數(下標)是不是素數,是則為true,
51nod 1831 小C的遊戲(博弈論+打表)
%d cstring tdi urn 博弈 ring stream 導出 logs 比較坑的題目。 題意就是:給出一堆石子,一次操作可以變成它的約數個,也可以拿只拿一個,不能變成一個,最後拿的人輸。 經過打表發現 幾乎所有質數都是先手必敗的,幾乎所有合數都是先手
C語言高效編程的幾招(絕對實用,絕對經典)
n) 工程 fine bit 高效 nbsp 與運算 測試的 body 編寫高效簡潔的C語言代碼,是許多軟件工程師追求的目標。廢話不說,走起! 第一招:以空間換時間 計算機程序中最大的矛盾是空間和時間的矛盾,那麽,從這個角度出發逆向思維來考慮程序的效率問題 eg.字
素數打表法
stdio.h clu fine pan prime bsp 題意 col i++ 很多時間超限的問題都與素數有關 #include <stdio.h>#define maxn 1000000//根據題意大概估算範圍;int prime[maxn];void g
c語言循環打印問題之A-F及VC6++斷點開發工具的使用
images span 遞歸調用 for循環 開發 開發工具 ron pan def 1. 利用for循環輸出 ABCDEF 6個 1->6BCDEF 5個 2->6CDEF 4個 3->6DEF 3個 4->6EF
【☆】素數打表--重要
sca %d col logs printf i++ amp pan 題目 題目:找出n以內的素數(n<100) 這裏只找出一組 代碼: 1 #include<stdio.h> 2 int main() 3 { 4 int n,i,j
hdu 4135 Co-prime (素數打表+容斥原理)
string tdi eof AR Go data tor tom void 題目鏈接 題意:問從A到B中與N互素的個數。 題解: 利用容斥原理:先求出與n互為素數的個數。 可以先將 n 進行素因子分解,然後用區間 x 除以 素因子,就得到了與 n 的 約數是那個素因子的個
Goldbach`s Conjecture LightOJ - 1259 (素數打表 哥德巴赫猜想)
rim inf clu 就是 include str cst name long long 題意: 就是哥德巴赫猜想。。。任意一個偶數 都可以分解成兩個(就是一對啦)質數的加和 輸入一個偶數求有幾對。。 解析: 首先! 素數打表。。因為 質數 + 質數 = 偶數 所以 偶數
C語言判斷素數(求素數)(兩種方法)(第二種沒看懂Kkkkk有空一定搞明白)(非原創)
素數又稱質數。所謂素數是指除了 1 和它本身以外,不能被任何整數整除的數,例如17就是素數,因為它不能被 2~16 的任一整數整除。 思路1):因此判斷一個整數m是否是素數,只需把 m 被 2 ~ m-1 之間的每一個整數去除,如果都不能被整除,那麼 m 就是一個素數。 思路2):另
C語言無頭節點單鏈表的實現
連結串列相對於順序表來說,插入和刪除更加方便,然而想要查詢一個元素時卻沒有順序表方便。 我們需要實現以下介面: #ifndef __LINKLIST_H__ #define __LINKLIST_H__ #include <stdio.h> #include <strin
C#語言————格式化數值結果表
字元 說明 示例
素數打表——找出1~100以內的素數
esp ace ++ str clu += iostream space ostream 素數篩選法: #include <iostream> using namespace std; //素數打表模板 bool is_prime[100]; i
CodeForces - 271B Prime Matrix (素數打表)
You've got an n × m matrix. The matrix consists of integers. In one move, you can apply a single transformation to the matrix: choose an
Problem Description——用c語言實現素數的判定
Problem Description 對於表示式n^2+n+41,當n在(x,y)範圍內取整數值時(包括x,y)(-39<=x<y<=50),判定該表示式的值是否都為素數。 Input 輸入資料有多組,每組佔一行,由兩個整數x,y組成,當x=0,y=0時,表示輸入結束,該
素數打表(線性篩)
#define Max 100005 int prime[Max]; int isprime[Max]; int num_prime=0; void IsPrime() { for(int i=2; i<Max; i++) { if(!isprime[i])
c語言模擬實現順序表的所有介面
順序表的c語言實現 此專案建立了3個原始檔,test.h用來建立結構體和函式的宣告,main.c用來實現函式,test.c用來實現順序表的總邏輯。 test.h #include<stdio.h> #include<assert.h> #include&