88分c++最后一点T求助!
查看原帖
88分c++最后一点T求助!
478766
zhongboxuan123楼主2022/11/13 08:09
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e8;
int prime[maxn],cnt;
bool st[maxn];
void ol_prime(int n){
	for(int i = 2;i <= n;i++)
    {
    	if(!st[i])
    	{
    		prime[++cnt] = i;//i是素数,存储到prime数组中 
		}
		for(int j = 1;prime[j] <= n / i;j++) 
		{
			st[prime[j] * i] = true;//将i的质数倍数进行标记
			if(i % prime[j] == 0)
			{
				break;
			 } 
		}
	}
	return ;
}
bool pd_hw(int x)
{

    int y=x,num=0;//int y=x,防止x被改变
    while (y!=0)
    {
        num=num*10+y%10;//上一次数字的记录进位再加上下一位数
        y/=10;
    } 
    if (num==x) return 1;
    else return 0;
}
int main(){
	int n,m;
	cin>>m>>n;
	ol_prime(n);
	for(int i=1;i<=cnt;i++){
		if(pd_hw(prime[i]) && prime[i]>=m && prime[i]<=n){
			cout<<prime[i]<<endl;
		}
	}
	
	return 0;
}

我这里选择了线性筛和回文判断,然后最后一点T,换了printf和scanf开了o2过了

2022/11/13 08:09
加载中...