c语言构造素数表

来源:互联网 发布:文字图片制作软件 编辑:程序博客网 时间:2024/09/21 08:15

方法一: 

主要思想: 先判断能否被已知的且小于x的素数所整除,若不能,则x为素数;

代码如下:

#include <stdio.h>int IsPrime(int x, int AlreadyPrime[], int length);int main(){const int N = 1024;const int num = 100;int prime[N];int cnt = 0, i = 2, j = 1;int *ptr = prime;while (cnt < num){if (IsPrime(i, prime, cnt)){prime[cnt] = i;cnt++;}i++;}//录入前100个素数for (; ptr - prime < num; ptr++){printf("第%d个素数是%d\n", j++, *ptr);}}//判断能否被已知且小于x的素数所整除int IsPrime(int x, int AlreadyPrime[], int length){int i;int ret = 1;for (i = 0; i < length; i++){if (x % AlreadyPrime[i - 1] == 0){ret = 0;break;}}return ret;}

方法二:

主要思想:

伪代码:




代码如下:

#include <stdio.h>int main(){const int MAX = 10240;int num = 0;printf("Input the numbers\n");scanf("%d", &num);int prime[MAX] = { 2 };int x;int i;int j = 0;for (x = 2; x < num; x++){if (!prime[x]){for (i = 2; x*i < num; i++){prime[i*x] = 1;}}}//这里与伪代码初始化相反,先全初始为0,若不为素数,则对应下标的元素赋值为1;for (i = 0; i < num; i++){if (!prime[i]){j++;printf("第%d个素数是%d\n", j, i);}}//输出数组元素值为0的项,下标对应的即为素数本身}


原创粉丝点击