【程序 1】 用筛选法求 100 之内的素数 筛选法又称筛法,是求不超过自然数 N(N>1)的所有质数的一种方法。据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前 274~194 年)发明的,又称埃拉托斯特尼筛子。 具体做法是:先把 N 个自然数按次序排列起来。1 不是质数,也不是合数,要划去。第二个数 2 是质数留下来,而把 2 后面所有能被 2 整除的数都划去。2 后面第一个没划去的数是 3,把 3 留下,再把 3 后面所有能被 3 整除的数都划去。3 后面第一个没划去的数是 5,把 5 留下,再把 5 后面所有能被 5 整除的数都划去。这样一直做下去,就会把不超过 N 的全部合数都筛掉,留下的就是不超过 N 的全部质数。因为希腊人是把数写在涂腊的板上,每要划去一个数,就在上面记以小点,寻求质数的工作完毕后,这许多小点就像一个筛子,所以就把埃拉托斯特尼的方法叫做“埃拉托斯特尼筛”,简称“筛法”。 #include #include void main() { int i,j; int a[100]; for(i=0;i<100;i++) a[i]=i+1; for(i=1;i<100;i++) { if(a[i]==0) continue; for(j=i+1;j<100;j++) if(a[j]%a[i]==0) a[j]=0; } for(j=1;j<100;j++) //j 从 1 开始,去除 a[0](其值为 1),因为 1 既不是质数,也不是合数 if(a[j]!=0) printf("%d,",a[j]); printf("\n"); } 【程序 2】 题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如 6=1+2+3.编程找出 1000 以内的所有完数。 程序源代码: #include int main() { int k[10]; int i,j,n,s; for(j=2;j<1000;j++) { n=-1; s=j; for(i=1;i #define N 10 int main() { int i,j,max,tem,a[N]; /*input data*/ printf("please input ten num:\n"); for(i=0;i