#include <stdio.h>
#include <stdlib.h>
int main(void){
double Euler(int n);
int find_k(int n);
int is_prime(int n);
printf("Euler(10) = %lf\n", Euler(10));
printf("Euler(100) = %lf\n", Euler(100));
printf("Euler(1000) = %lf\n", Euler(1000));
printf("Euler(10000) = %lf\n", Euler(10000));
return 0;
}
int find_k(int n){ //此副程式主要為找出4k+2的值
int j;
j = n/2;
if(2*j%4==0){
return 2*j+2;
}else{
return 2*j;
}
}
double Euler(int n){ //n為項次,即要找出幾個質數進行計算
int i=1,x=3; //x為遞增用來找出質數數列
double e=1;
while(i<=n){
if(is_prime(x)==1){ //x為質數則進行計算, 且項次+1
e=e*x/find_k(x);
i++; //找到質數,像次+1
}
x++;
}
return e*2;
}
int is_prime(int n){ //檢查n是否為質數
int j;
for(j=2;j<n;j++){ //小於i的自然數都拿來除以j
if(n%j==0){ //若是可以整除則表示有因數
return 0; //非質數,回傳為否
}
}
return 1; //質數,回傳為真
}
請先 登入 以發表留言。