一定范围内特定素数和

一定范围内特定素数和

时间: 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;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注