poj_2739_水题_simple数论?

来源:互联网 发布:findpeaks算法 编辑:程序博客网 时间:2024/04/28 16:57

题目描述:

  一个数,可能由几组连续的质数想加的到。这样的连续质数的可能性有几种?

 

解题思路:

  直接循环依次找就好了。连续找质数,如果符合加和=输入则计数。把第一个数单独出来,则令第一个数穷举到2*i< num即可。本来以为会超时。结果貌似对时限要求一点都不高……

 

代码:

#include <stdio.h>
#include <stdlib.h>

int isPrime(int n)
{
   int i;
  for(i=2;i*i<=n;i++)
     if(n%i==0)
        return 0;
   return 1;
}

main()
{
   int num,i,j,count,sum;
  
  scanf("%d",&num);
   while(num){
     count = 0;
     for(i=2;2*i<num;i++){ //到一半即可
        if(isPrime(i)==0)
           continue;
        sum = i;
        for(j=i+1;j<num;j++){
           if(isPrime(j)==0)
              continue;
           sum += j;
           if(sum>=num){
              if(sum == num)
                 count++;
              break;
           }
         
     }
     if(isPrime(num))
        count++;
     printf("%d\n",count);
  
     scanf("%d",&num);
   }
   system("pause");
   return 0;
  
}

 

原创粉丝点击