码迷,mamicode.com
首页 > 其他好文 > 详细

2020.1.20 绝对素数

时间:2020-01-20 13:15:31      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:include   lse   names   参数   name   bool   std   打表   line   

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!

这里我写了两个函数,大函数里有小函数。这是我这个程序唯一不太一样的地方,其他都很简单。

我为什么要写这个。。。凑字数!

2020.1.20 绝对素数

标签:include   lse   names   参数   name   bool   std   打表   line   

原文地址:https://www.cnblogs.com/jiangyuechen/p/12217226.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!