level 2
方正好强
楼主

编译出错,怎么回事?codeblocks应该支持这个c99的功能的.在另外的编译器就可以,
代码:#include <stdio.h> //以数组的形式,输出number个素数
int isPrime( int x, int knownPrimes[], int numberofPrimes);
int main(void) {
const int number = 15; //数组中(要输出的)素数个数:number
int prime[number]={2}; //第一个素数是2,将素数表中的prime[0]初始化为2
int count = 1; //素数表prime[0]位置已存在.素数判定从1开始计数(下标).
int i = 3; //素数从3开始判定.
//测试,观察变化规律.
{
int i;
printf("计数器:i素数个数:cnt\t");
for ( i=0; i<number; i++) //遍历输出数组下标直至数组总数.
printf("%d\t",i);
printf("\n");
}
//输出"自增计数器i","素数个数cnt",数组下标做表头.
while ( count < number ){ //数组下标,要输出的数组个数
if ( isPrime(i,prime,count) ) //调用函数(计数器,数组,数组下标)
prime[count++] = i; //赋值:prime[count]=i;数组下标自增:count++
//为了便于观察
{
printf("i=%d\tcnt=%d\t\t",i,count);
int i;
for ( i=0; i<number; i++)
printf("%d\t",prime[i]);
printf("\n");
}
//,输出自增计数器i,素数的个数cnt,数组中素数的变化规律.
i++; //判定i是否为素数.是,则将i加入prime函数.
}
printf("\n%d个素数的素数表如下:\n",number);
for ( i=0; i<number; i++ ) { //遍历输出
printf("%d",prime[i]);
if ( (i+1)%10) //为便于观察,以10个为一组输出并换行.
printf("\t");
else
printf("\n");
}
return 0;
}
//方法4,判断是否能被已知的且<x的素数整除
int isPrime( int x, int knownPrimes[], int numberofPrimes) {
int i; //计数器i,已知素数组(被除数),已知素数个数+1.
int ret = 1; //prime[count++];
for ( i=0; i<numberofPrimes; i++) {
if ( x%knownPrimes[i] == 0 ) { //x除以已知素数中的所有(0~i遍历)素数.
ret = 0;
break;
}
}
return ret; //通过判定,则prime[count++] = i;numberofPrimes增1.
}