一定范围内特定素数和
时间: 1ms 内存:128M
描述:
求一定范围内[m,n]特定素数的和(特定素数指含有数字3的素数,比如3,13,31等)
输入:
第一行输入一个数t代表测试数据组数,随后的t行每行包含两个数m,n代表一定的范围(0<m,n<=100,m不等于n)
输出:
输出有t行,每行包含一个数,输出相应的特定素数的和
示例输入:
2
1 3
2 14
示例输出:
3
16
提示:
参考答案(内存最优[748]):
#include<stdio.h>
void main()
{
int t,x,y,sum=0,i,n,flag,j;
scanf("%d",&t);
for(j=0;j<t;j++)
{
scanf("%d%d",&x,&y);
if(x>y)
{
t=x;
x=y;
y=t;
}
sum=0;
for(n=x;n<=y;n++)
{
for(i=2,flag=1;i<n;i++)
if(n%i==0) flag=0;
if(flag==1)
if(n/10==3||n%10==3)
sum+=n;
}
printf("%d\n",sum);
}
}
参考答案(时间最优[0]):
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int prime(int m)
{
for(int i=2;i<=sqrt(m);++i)
if(m%i==0)
return 0;
return 1;
}
int main()
{
int t,i;
cin>>t;
/*for(i=2;i<=100;i++)
if(prime(i))
cout<<i<<endl;*/
for(i=1;i<=t;i++)
{
int m,n;
cin>>m>>n;
int sum=0;
if(m>n)
swap(m,n);
for(;m<=n;m++)
{
if(prime(m)&&(m/10==3||m%10==3))
sum+=m;
}
cout<<sum<<endl;
}
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。
