c语言,求2~100的素数,并且存于a中

谢谢

#include <stdio.h>
#include <conio.h>

#define ARR_LEN 255 /*数组长度上限*/

/* 试除法判断素数 */
/* 大于1的自然数num,若其不能被2~num^1/2(num的平方根)之间的任一自然数整除,则其为素数 */
/* num是素数返回1,否则返回0 */
int isPrime (int num) {
int i;
if (num <= 1) /* 素数必须是大于1的自然数 */
return 0;
if (num%2==0 && num!=2) /* 除2之外的偶数显然不是素数 */
return 0;
for (i=2; i*i<=num; i++)
if (num%i == 0)
return 0;
return 1;
}

/* 遍历并以试除法确定n以内的素数 */
/* 将n以内的素数存入primeNums,并返回素数个数 */
int primeNumbers (int primeNums[], int n) {
int i, j;
for (i=2, j=0; i<=n; i++)
if (isPrime (i)) {
primeNums[j] = i;
j++;
}
return j;
}

/*打印数组*/
/* int arr[]: 打印目标数组; int len: 元素个数 */
void printArray (int arr[], int len) {
int i;
for (i=0; i<len; i++)
printf ("%d\t", arr[i]);
putchar ('\n');
}

int main (void) {
int n, a[ARR_LEN], prinmeCnt;
int i;

n = 200; /* 求n以内(包含n)的所有素数 */

/* 遍历并以试除法确定n以内的素数 */
prinmeCnt = primeNumbers (a, n);
printf ("All the prime numbers below %d: \n", n);
printArray (a, prinmeCnt);

getch (); /* 屏幕暂留 */
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-08

相似回答