1. 程式人生 > 其它 >求1000以內的完數及100以內所有素數

求1000以內的完數及100以內所有素數

技術標籤:c語言入門

完數:一個數恰好等於它的真因子之和
分析:
第一個完全數是6,1+2+3=6。
第二個完全數是28,1+2+4+7+14=28。
第三個完全數是496,1+2+4+8+16+31+62+124+248=496。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[]) {
	int n,i,sum;
	for(n=2;n<1000;n++)
	{
		sum=1;
		for(i=2;i<sqrt(n)
;i++) if(n%i==0) sum+=i+n/i; //將可以整除的數加到sum if(i*i==n) sum+=n; //因子相同的數,只加一次,此句可省 if(sum==n) printf("%d ",n); } return 0; }

輸出結果:

在這裡插入圖片描述

求100以內的所有素數

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define SIZE 100
int main(int argc, char *argv[
]) { int a[SIZE],i,j; for(i=0;i<SIZE;i++) a[i]=1; a[0]=a[1]=0; for(i=2;i<sqrt(SIZE);i++) if(a[i]==1) //從素數中再次篩選 { for(j=i*i;j<SIZE;j+=i) //去除倍數 a[j]=0; } for(i=0;i<SIZE;i++) if(a[i]==1) printf("%d ",i); return 0; }

輸出結果:
在這裡插入圖片描述