1. 程式人生 > >Eratosthenes 篩選法 c語言 陣列+指標實現

Eratosthenes 篩選法 c語言 陣列+指標實現

#include<stdlib.h>
#include<stdio.h>

#define SIZE 1000
#define TRUE 1
#define FALSE 0
int main()
{
    char sieve[ SIZE ];
    char *sp;
    int number;
    /*
     Set the entire sieve to TRUE
     */
    for( sp = sieve; sp < &sieve[ SIZE ]; )
        *sp++ = TRUE;

    /*
    process each number from 3 to as many as the sieve holds
    */
    for( number =3; ;number +=2 ){
        sp = &sieve[ 0 ] + ( number -3 )/2;
        if( sp >= &sieve[ SIZE ] )
            break;
    /*
     Now advance the pointer by multiples of the number and set each subsequent entry FALSE.
     */
        while( sp += number, sp < &sieve[ SIZE ] )
            *sp = FALSE;
    }

    /* Go through the entire sieve now and print the numbers corresponding to the locations that remain TRUE */
    printf( "2/n" );
    for( number =3,sp = &sieve[ 0 ];sp < &sieve[ SIZE ]; number += 2 ,sp++ ){
        if( *sp )
            printf( "%d/n",number );
    }
    return EXIT_SUCCESS;
}

相關推薦

Eratosthenes 篩選 c語言 陣列+指標實現

#include<stdlib.h>#include<stdio.h> #define SIZE 1000#define TRUE 1#define FALSE 0int main(){    char sieve[ SIZE ];    char *

C語言指標實現兩個陣列值互換

C語言用指標實現兩陣列的值互換 #include <stdio.h> #define N 10 void ReadData(int a[], int n); void PrintDa

C語言-陣列指標指標陣列

1、思考 下面這些宣告合法嗎?    int array[5];   int matrix[3][3];   int * pa = array;   int * pm = matrix; 問題:    array代表陣列首元素的地址,那麼matrix代表什麼? 

C語言函式指標實現多型特性

1、函式指標 函式指標是指向函式的指標變數,本質上是一個指標,類似於int*,只不過它是指向一個函式的入口地址。有了指向函式的指標變數後,就可以用該指標變數呼叫函式,就如同用指標變數引用其他型別變數一樣。 指標函式一般有兩個作用:呼叫函式和做函式的引數。 2、函式指標實現多

C語言陣列指標指標陣列

在陣列指標和指標陣列這塊我總是弄不清楚,總結一下 指標陣列:用於儲存指標的陣列,也就是陣列元素都是指標 陣列指標:指向陣列的指標 關於這部分有一道題:        一個有10個指標的陣列,該指標指向一個函式,該函式有一個整型

C語言——陣列指標和通過指標引用陣列元素的方法總結

1.陣列指標:即指向陣列的指標 那麼, 如何宣告一個數組指標呢? int (* p)[10]; /*括號是必須寫的,不然就是指標陣列;10是陣列的大小*/ 拓展:有指標型別元素的陣列稱為指標陣列。 2.通過指標引用陣列元素的基本方法 (1)小標法:

C語言陣列指標(指向陣列指標

陣列(Array)是一系列具有相同型別的資料的集合,每一份資料叫做一個數組元素(Element)。陣列中的所有元素在記憶體中是連續排列的,整個陣列佔用的是一塊記憶體。以int arr[] = { 99, 15, 100, 888, 252 };為例,該陣列在記憶體中的分佈

c語言使用指標實現二叉樹遍歷

使用指標實現二叉樹的定義,建立,以及前序遍歷,中序遍歷,後續遍歷。 /* 該程式實現了二叉樹的建立,以及樹的遍歷,前序遍歷,中序遍歷,後序遍歷。 */ #include <stdio.h> #include<stdlib.h> #include &

C語言實現動態陣列 C語言函式指標和回撥函式

實現任意資料型別的動態陣列的初始化,插入,刪除(按值刪除;按位置刪除),銷燬功能。、 動態陣列結構體   實現動態陣列結構體的三個要素:(1)陣列首地址;(2)陣列的大小;(3)當前陣列元素的個數。 1 //動態陣列結構體 2 struct DynamicArray{ 3 void **a

排序算C語言實現——冒泡排序

int ram 這一 -i 循環 一點 lag 開始 冒泡 /*冒泡O(n^2)*/ /*原理: 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。 對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。 針

資料結構---棧(C語言陣列實現

https://blog.csdn.net/morixinguan/article/details/51374184 資料結構---棧(C語言陣列實現)   棧的全名稱為堆疊,棧其實就是與佇列相反的過程,佇列是先進先出,而棧便是先進後出了,如下圖:  

資料結構---佇列(C語言陣列實現

https://blog.csdn.net/morixinguan/article/details/51374296 資料結構---佇列(C語言陣列實現)   佇列是先進先出的過程。簡單地畫一幅畫來描述一下佇列: 一個簡單的、由陣列實現的佇列,可以由以下幾種最基本的操

c語言 通過指標實現strcmp

實現strcmp比較字串的大小除了利用庫函式之外,還可以通過自己對該函式的模擬來實現該函式。 利用函式的呼叫,建立一個my_strcmp,如果兩個字串從頭到尾由第一個字元開始,如果有一個字元在兩個字串中有不同,則比較這兩個字元的大小從而實現字串的大小比較。 在第一個例子中,是利用返回值的不同來獲得

C語言使用指標表示陣列的注意事項

1)陣列名是指標常量 如對指標變數可以進行++運算,但是對陣列名卻不允許,另外,對陣列名的賦值運算也是錯誤的 2)注意指標變數的當前值 指標變數的值在程式執行過程中可能經常改變,要對此注意 3)陣列越界 C語言系統是不檢查陣列越界的,需要程式設計師自行檢查 4)深入理解++和—與指標變數的結合

c語言指標陣列陣列指標和函式指標

#include <stdio.h> #include <stdlib.h> int func(int x){ return x; } int* func2(int x){ int *p=&x; return

C語言指標與二維陣列

    指標,其實就是地址,可以指向一塊自己分配大小的空間。陣列即是多塊一位的空間的線性排布。二維陣列,雖然在人文定義的感覺上有了面的理解,但實際在記憶體中也是一維的線性空間。     對於討論二維陣列,首先我們應該先討論一維陣列與

c語言指標陣列陣列指標的認識

1.陣列:一批具有同名的同屬性的資料就組成了一個數組。(“[ ]”也是陣列型別的一部分)     由此可知:(1)陣列是一組有序資料的集合;(2)陣列中的每一個元素都屬於同一個資料型別。  定義一維陣列的一般形式:型別符  陣列名【常量表達式】(陣列也

C語言陣列篇(二)指標陣列陣列指標

陣列指標 和 指標陣列           這兩個名詞可以說是經常搞混了         陣列指標--> 陣列的

C語言陣列篇(五)多級指標和二維陣列指標的區別

多級指標   以二級指標為例 二級指標的由來是 指標陣列 的指標形式. int *p[10] 讀取的順序是 p[10] --> 10個空間的陣列 * p[10] --> 這10個空間的數組裡面存放的資

c語言指標陣列小練習

一維陣列 int a[]={1,2,3,4}; 1.printf(“%d\n”,sizeof(a)); //16 sizeof(陣列名)求的是整個陣列的大小 2.printf(“%d\n”,sizeof(a+0)); //4 表示第一個元素地址的大小(