zoukankan      html  css  js  c++  java
  • NOI-OJ 1.13 ID:5 素数回文数的个数

    整体思路

    • 使用埃拉拖色尼算法提前计算出1000以内的素数表。

    • 设计一个回文判断函数isHW(int n),难点在于数字回文的判断。一个简单的方法是将数字n使用sprintf输出在一个数组中,然后从数组的头和尾开始进行逐一对比。

    著名金融家“索罗斯”的名字“SOROS”就是一个回文字串。

    例程

    #include<iostream>
    #include<cmath>
    #include<cstring>
    using namespace std;
    bool ss[10001];				//素数表
    int  count;					//计数器
    
    void altsn(int N){			//埃拉拖色尼算法
    	ss[0]=1;
    	ss[1]=1;
    	int p=2;
    	while(p<=sqrt(N))
    		if(ss[p]) p++;
    		else{
    			int times=2;
    			while(p*times<=N)	{ ss[p*times]=1; times++;}
    			p++;
    		}
    }
    
    bool isP(int n){			//素数判断函数
    	if(!ss[n])	return true;
    	return false;
    }
    
    bool isHW(int n){			//回文判断函数
    	char s[10];
    	int  len, i, j;
    	sprintf(s, "%d", n);	//将n输出值数组中
    	len=strlen(s);
    	for(i=0, j=len-1; s[i]==s[j] && i<j; i++,j--) ;	//注意这个循环
    	if(i==j || (j+1)==i)	return true;			//注意成为回文的条件
    	return false;
    }
    
    int main(){
    	int N;
    	cin>>N;
    	altsn(N);
    	for(int i=11; i<=N; i++)						//从11~N依次判断
    		if(isP(i) && isHW(i))	count++;			//是素数且是回文
    	printf("%d", count);
    	return 0;
    }
  • 相关阅读:
    LeetCode 368Largest Divisible Subset
    macbook 源码安装 redis6.2.6
    macbook 源码安装 nginx1.20.1
    MySQL总结
    DataWork之 MaxComputer的使用
    Spring的IOC源码分析
    Spring Bean的生命周期
    SpringMVC工作原理
    Spring全家桶(二)之SpringMVC总结
    (已经成功部署)配置vue+nginx+uwsgi luffy项目
  • 原文地址:https://www.cnblogs.com/lfyzoi/p/6697659.html
Copyright © 2011-2022 走看看