求1000以內的完數及100以內所有素數
阿新 • • 發佈:2021-01-24
技術標籤: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;
}
輸出結果: