3904 - 非素数之和

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

大家都做过素数之和的题目,应该都了解方法了吧,那么非素数之和是否也可以了呢?试试看吧!

题目输入

输入一个数N,表示有N组数据,接下来N行分别输入两个数a,b,0<a<b<=100;

题目输出

输出a,b之间的非素数之和s,每两组数据之间一个空行;

输入/输出样例

输入格式

3
1 10 
10 20
1 50

输出格式

38

105

947

C语言解答

#include<stdio.h>

int Is_prime(int n)
{
  int i;
  for(i = 2; i < n; i++)
    if(n % i == 0)
        return 0;
   return 1;
}
int main()
{
  int i, sum, n, flag = 0, a, b;
      scanf("%d",&n);
      while(n--)
      {
        scanf("%d%d",&a,&b);
        sum = 0;
            for(i = a; i <= b; i++)
            {
              if(i == 1)
              {
                sum += 1;
                continue;
              }
              if(!Is_prime(i))
                sum += i;
            }
        if(flag)
          printf("\n");
        else
          flag = 1;
        printf("%d\n",sum);
      }
  return 0;
}

C++解答

#include<stdio.h>
int main()
{
    int m,a,b,i,j,s;
    scanf("%d",&m);
    while(m--)
    {
        s=0;
        scanf("%d %d",&a,&b);
       if(a<2)
               s+=a;
        for(i=a; i<=b; i++)
        {

            for(j=2; j*j<=i; j++)
                if(i%j==0)
                {
                    s+=i;
                    break;
                }

        }
         if(m==0)
            printf("%d\n",s);
        else
             printf("%d\n\n",s);
    }
    return 0;
}