首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

求任意数以内所有可以表示为连续素数之和的素数

2012-09-15 
求任意数以内所有可以表示为连续素数之和的素数。/* * 求100以内所有可以表示为连续素数之和的素数。 * 素数

求任意数以内所有可以表示为连续素数之和的素数。

/* * 求100以内所有可以表示为连续素数之和的素数。 * 素数i和j(i<j)为连续素数是指不存在素数k使得i<k<j成立。 * 例如:2、3、5、7就是一组连续素数,5、11不是连续素数。 * 正确的输出结果如下(共十一个素数满足条件): * 小于100的素数中满足条件的素数为: * 5=2+3 * ...... * 83=11+13+17+18+23 * 97=29+31+37 */#include <stdlib.h>#include <stdio.h>int primes[1000];int isPrime(int n){int i,j;if(n == 1) return 0;for(i=2,j=(int)sqrtl(n);i<=j;i++)if(n%i==0) return 0;//不是质数    printf("%d ",n);return 1; //是质数}int match(int index) //判断第i个质数是否满足条件{int sum;    int i,j,k;    for(i=0; i<index; i++)    {        sum = 0;        for(j=i; j<index; j++)        {            sum += primes[j];            if(primes[index] == sum)            {                printf("%d = ",primes[index]);                for(k=i; k<j; k++)printf("%d + ",primes[k]);                printf("%d\n",primes[k]);                return 1;            }        }    }return 0;}int main(int argc, char *argv[]){int i,j,low,high,count=0,n;printf("Please input n : ");scanf("%d",&n);printf("\n");for(i=2;i<n;i++){if(isPrime(i))            primes[count++]=i;}printf("\n一共%d个质素\n\n满足条件的素数为:\n",count);for(i=0;i<count;i++)        match(i);getchar();}

热点排行