(C语言) 用数组的方法判断素数
2020-04-05 18:21
1991 查看
Description
打印100以内的素数
Method Ⅰ
素数是在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数,所以从x=2开始把x的所有小于100的倍数挨个排除掉
int main() { const int maxnum = 100; int isPrime[maxnum]; int i, x; for (i = 0; i < maxnum; i++) { isPrime[i] = 1;//把数组所有元素初始为1 } //元素的下标代表判断的数字,值为1表示素数,值为0不是 for (x = 2; x < maxnum; x++) { if (isPrime[x]) { for (i = 2; i * x < maxnum; i++) { isPrime[i * x] = 0; //从2开始,把每个数的倍数都挨个排除掉 } } } for (i = 2; i < maxnum; i++) { printf("%d\t", i); } return 0; }
Method Ⅱ
isPrime() 的作用是判断整数 i 能不能被比他小的素数整除,如果能被其中一个整除就不是素数。根据这个方法非素数被从小到大依次排除,因此不用判断 i 能否被比它小的非素数整除
int isPrime(int x, int knownPrimes[], int count) { int ret = 1; int i; for (i = 0; i < count; i++) { if (x % knownPrimes[i] == 0) { ret = 0; break; } } return ret; } int main() { const int number = 100; int knownPrimes[number] = { 2 }; int count = 1;//Number of known primes int i = 3; while (i<number) { if (isPrime(i, knownPrimes, count)) { knownPrimes[count++] = i; } i++; } for (i = 0; i < number; i++) { printf("%d ", knownPrimes[i]); } return 0; }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- c语言(函数练习题:乘法表、两数交换、判断闰年、初始化数组、清空数组、逆置数组、判断素数)
- C语言实现2~n之间的素数判断的三种方法
- 自定义100个元素的数组,通过随机数生成各元素值,范围为2到1000之间,调用方法判断每个数是否素数,并统计素数的个数。
- PHP判断一个数组是另一个数组子集的方法详解
- 素数的几个判断方法(小结)
- 关于C语言创建一个数组的三个方法,其中包含变长数组。
- C语言中判断CPU大小端的方法
- c语言中如何判断一个数组是递增数组
- C语言实现打印1000以内素数的三种基本方法
- C语言 给字符数组赋值的方法<转>
- 判断一个对象是否数组类型的7中方法
- 判断一个数字是否为素数 C语言
- C语言中怎么判断一个数是否是素数(即质数)
- 详解Swift中对C语言接口缓存的使用以及数组与字符串转为指针类型的方法
- 使用数组实现人机下五子棋的效果(还没有写判断输赢的方法)
- 【C语言----23】素数的判断
- C语言判断两个lpcwstr字符串是否相等的方法
- JavaScript判断数组是否包含指定元素的方法
- C语言定义数组指针的三种方法
- C语言求素数方法