Bonjour!我是历城二中信息学奥赛的姜岳宸。今天是我第一次发博客呢!:)
今天我做了一个很简单的题:绝对素数(信息学奥赛P1153)
题目大概是,如果一个两位数本身和其交换个位和十位形成的新数字都是素数,那么这个数叫绝对素数。输出所有两位绝对素数。
打表是个好东西。
打表是个好东西!
打表是个好东西!!!
To Be Continued->
首先要解决质数(我就不说素数,来打我呀)的判断问题。紧扣质数定义,写如下函数:
bool zhiShu(int a) { if(a==1) return false; for(int i=2;i<a;i++) { if(a%i==0) return false; } return true; }
首先1不是质数,返回false;从2开始除到参数-1,若有一个能整除,那么它不是质数。都不能整除就是了。
然后。。。基于质数的判断,再写一个判断绝对质数的函数:
bool totallyZhishu(int a) { int b=0; b=a%10*10+a/10; if(zhiShu(a)&&zhiShu(b)) return true; else return false; }
其中有关于质数判断函数的使用。b是“新两位数”。
然后愉快地写main函数:
#include<iostream> #include<cstdio> using namespace std; bool totallyZhishu(int a); bool zhiShu(int a); int main() { for(int i=10;i<=99;i++) { if(totallyZhishu(i)) cout<<i<<endl; } } bool totallyZhishu(int a) { int b=0; b=a%10*10+a/10; if(zhiShu(a)&&zhiShu(b)) return true; else return false; } bool zhiShu(int a) { if(a==1) return false; for(int i=2;i<a;i++) { if(a%i==0) return false; } return true; }
ok!
这里我写了两个函数,大函数里有小函数。这是我这个程序唯一不太一样的地方,其他都很简单。
我为什么要写这个。。。凑字数!