1013. 数素数
令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数。
输入格式:
输入在一行中给出M和N,其间以空格分隔。
输出格式:
输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。
输入样例:5 27输出样例:
11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103
/*输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。*/
#include<stdio.h>
#include<math.h>
#define maxn 1000002
int prime[maxn];//函数和主函数都要用到,所以要定义到外面,不然findprime函数会失效的
bool p[maxn]={0};
void findprime(int n)
{
int num=0;
for(int i=2;i<maxn;i++)//从2开始找素数
{
if(p[i]==false)//筛选法,初始p[i]都为假,判断i是否是素数,把p[i]变为真
{
prime[num]=i;//num记录是第几个素数,从0开始,到了n就停止,n是从键盘输入的范围
num++;
if(num>=n)//到n就停止
break;
for(int j=i+i;j<maxn;j=j+i)//用来判断素数
{
p[j]=true;
}
}
}
}
int main()
{
int m,n;
int count=0;//每10个换行
scanf("%d%d",&m,&n);
findprime(n);
for(int i=m;i<=n;i++)
{
printf("%d",prime[i-1]);//prime数组是从0开始的,要记得减1
count++;
if(count%10!=0&&i<n)printf(" ");//10个数字一行,且i是最后一个时不要空格
else printf("\n");
}
}
1016. 部分A+B
正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。
现给定A、DA、B、DB,请编写程序计算PA + PB。
输入格式:
输入在一行中依次给出A、DA、B、DB,中间以空格分隔,其中0 < A, B < 1010。
输出格式:
在一行中输出PA + PB的值。
输入样例1:3862767 6 13530293 3输出样例1:
399(66+333)输入样例2:
3862767 1 13530293 8输出样例2:
0(0+0)
#include<stdio.h>
int main()
{
long long a,b,da,db;
scanf("%lld%lld%lld%lld",&a,&da,&b,&db);
long long pa=0,pb=0;
while(a!=0)
{
if(a%10==da)//取余,从最后一位往前逐位查找有没有等于da的
pa=pa*10+da;
a=a/10;
}
while(b!=0)
{
if(b%10==db)
pb=pb*10+db;
b=b/10;
}
printf("%lld",pa+pb);
}