- 论坛徽章:
- 0
|
本帖最后由 su_787910081 于 2012-09-07 22:45 编辑
楼主不是已经有了代码了吗?
他的意思不是说没弄明白那代码是怎么来的吗?
怎么全都自己另外去写了啊.
楼主的那个算法非常地道啊.
我做了一些改动.
#include <stdio.h>
#include <assert.h>
static int findvalue[2000] = {2}; // 2是偶数, 但是素数.所以把他直接放进去,提高一下效率
static int ind=1; // 这个是下标, 下一个素数放在 findvalue[ind] 里面
void prime(int value); // 函数声明 判断 value 是不是素数, 如果是放到数组里
int main()
{
int i=3;
while(i<=2000){
prime(i);
i += 2;
}
//将数组里面的素数打印出来, 每10个换一行
for(i=0; i<ind; i++){
printf("%4d ", findvalue);
if((i+1)%10 == 0) { printf("\n"); }
}
return 0;
}
/************************************************
* 下面那个函数就是判断传入的参数是否是素数,
* 只要这个参数被现在数组里的任一一个素数整除,
* 则说明他不是素数;
* 反之, 说明他就是素数.
* 既然是素数就把它放到数组里.
* ind 是下标, 同时它还记录了这个数组里一共存放了多少个素数.
***********************************************/
void prime( int value){
assert( value>2);
int i;
for( i=0; i<ind; i++){
if(value%findvalue == 0) { return ;}
}
findvalue[ind++] = value;
}
|
|