判断素数

素数回文

匿名 (未验证) 提交于 2019-12-03 00:12:02
#include <iostream> #include <string> #include <cmath> #include <vector> using namespace std; bool isS(int n);//判断素数 bool isP(int n);//判断回文 int main() { vector<int>res; int a, b; cin >> a >> b; for (int i = a; i <= b; i++) { if (isS(i) && isP(i)) res.push_back(i); } int l = res.size(); for (int i = 0; i < l-1; i++) { cout << res[i] << "\n"; } cout << res[l-1]; return 0; } bool isS(int n) { int l = (int)sqrt(n); for (int i = 2; i <= l; i++) { if (n % i == 0) return false; } return true; } bool isP(int n) { //if n == reverseN return true; int reverseN = 0; int tmp = n; while (tmp > 0) { reverseN

搜索入门练习题1 素数环 题解

匿名 (未验证) 提交于 2019-12-02 23:57:01
题目出处:《信息学奥赛一本通》例5.1。 素数环:从 \(1\) 到 \(n(2 \le n \le 20)\) 这 \(n\) 个数摆成一个环,要求相邻的两个数的和是一个素数。 输入包含一个整数 \(n(2 \le n \le 20)\) 。 按字典序从小到大的顺序输出所有排列方案,每个排列方案占一行。每行的 \(n\) 个数之间由一个空格分隔。 2 1 2 2 1 很明显,这是一道可以用搜索解决的问题,我们可以采用“回溯”思想,使用深度优先搜索解决这个问题。 我们用 ans[] 数组来存放我们当前遍历到的答案, ans[id] 用于表示当前排列的第 id 个数是什么。所以我们可以开一个函数 void f(int id) 来表示要在第 id 个位置放数,我只需要从 1 到 n 遍历每一个数(我这里假设是 i),并判断 i 是否能放。 在第 id 个位置能放 i 当且仅当: \(ans[1]\) 到 \(ans[id-1]\) 都不等于 \(i\) ,即 \(i\) 之前没有放过; 当 \(id \gt 1\) 时,满足 \(ans[id-1]+ans[id]\) 是素数; 当 \(id = n\) 时,满足 \(ans[1] + ans[n]\) 是素数。 这样,我们递归地调用 f(id) ,当 id>n 时就是我们递归的边界条件;一旦 id>n 就说明我找到了一种方案。

POJ--2689-C++

匿名 (未验证) 提交于 2019-12-02 23:51:01
题意很简单就是让你求给定区间的素数,然后用一个循环求出相距最远的相邻素数数和最近的素数以及相距最近的相邻素数 难点在与数据很大,所以不可能直接对区间的每一个数进行素数判断。但是,每个合数n都至少有一个因数在2到根号n(以此来筛去该合数),同时这其中U的最大值为2的31次方,对其开方得46000+,这个数据的大小在可接受范围内,所以可以用2到根号U之间的素数来筛去L到U区间的合数。 #include<iostream> #include<cstring> #include<utility> #include<cmath> #define N 1000000 #define M 50000 using namespace std; int primes[M]; bool judge[M]; bool p[N]; int b[N]; int cnt; void getPrimes(int n); int main() { } void getPrimes(int n)//用欧拉筛法筛出2到根号n里面的素数 { }

Java打印素数(质数)

匿名 (未验证) 提交于 2019-12-02 21:53:52
要求:打印 2 - 100000 当中的素数与非素数。(素数定义:在大于1的自然数中,除了1和它本身以外不再有其他因数) // sqrt 法 public static void printPrime1( int num) { boolean [] isPrimes = new boolean [num + 1 ]; for ( int i = 2; i < isPrimes.length; i++ ) { isPrimes[i] = true ; } for ( int i = 3; i <= num; i++ ) { for ( int j = 2; j <= Math.sqrt(i); j++ ) { if (i % j == 0 ) { isPrimes[i] = false ; break ; } } } System.out.print( "质数有: " ); for ( int i = 2; i < isPrimes.length; i++ ) { if (isPrimes[i]) { System.out.print(i + " " ); } } System.out.println( "" ); System.out.print( "非质数有: " ); for ( int i = 2; i < isPrimes.length; i++ ) { if (!

牛客网PAT练习场-数素数

做~自己de王妃 提交于 2019-12-02 19:57:44
题解:就是一道素数筛选法 题目地址:https://www.nowcoder.com/questionTerminal/e0fb49acb75f47e8b6fa2077d9071799 1 /** 2 * Copyright(c) 3 * All rights reserved. 4 * Author : Ycute 5 * Date : 2019-10-29-19.45.37 6 * Description : 筛选法求素数个数 7 */ 8 #include<iostream> 9 #include<cstdio> 10 #include<cmath> 11 #include<cstring> 12 #include<algorithm> 13 using namespace std; 14 15 //判断该数是否为素数; 16 bool f(int in){ 17 for(int i=2;i<=sqrt(in);++i){ 18 if(in%i==0)return false; 19 } 20 return true; 21 } 22 bool flag[200005]={0};//标记数组 23 int main(){ 24 flag[1]=1; 25 int a,b; 26 scanf("%d %d",&a,&b); 27 for(int i=2;i<200005;++i

C语言I博客作业05

走远了吗. 提交于 2019-12-02 12:47:20
这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 作业要求 我在这个课程的目标是 能独立运用c语言进行编程 这个作业在那个具体方面帮助我实现目标 发现问题帮助自己打牢基础 参考文献 C 语言教材 1.PTA实验作业 1.1 水仙花数判断 本题要求实现一个函数,判断任一整数是否为水仙花数(必须是三位数,且数的每一位上数字的立方和与数本身相等)。例如153=1^3+5^3+3^3=1+125+27=153,而1或155则不是水仙花数。如果是水仙花数,则函数返回1,否则返回0. 函数接口定义: int func(const int N); 其中N是用户传入的参数。N的值不超过int类型的范围。如果参数N是水仙花数,则返回1,否则返回0。 输入样例: 153 输出样例: 1 1.1.1数据处理 数据表达 :定义sum,x为整型变量,sum是用sum += (x % 10) * (x % 10) * (x % 10)计算每个数立方的和,由于N不可变,就把值赋给了x; 数据处理 :分为whlie if两大部分,其中whlie用于实现计算 if用来决定函数返回值; 函数参数 :主调函数的名称main,被调函数的名称func,被调函数的类型为整型,形参N。 1.1.2实验代码截图 1.1.3 造测试数据 输入数据 输出数据 说明 153 1 素数 100 0 不是素数 0 1

C语言I作业05

扶醉桌前 提交于 2019-12-02 11:18:31
这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2019-2/homework/9830 我在这个课程的目标是 标准库函数和自定义函数的编译 这个作业在那个具体方面帮助我实现目标 加强的对编译自定义函数方面的思维能力 参考文献 c语言程序设计 1.PTA实验作业 1.1 本题要求实现一个函数,判断任一整数是否为水仙花数(必须是三位数,且数的每一位上数字的立方和与数本身相等)。例如153=1^3+5^3+3^3=1+125+27=153,而1或155则不是水仙花数。如果是水仙花数,则函数返回1,否则返回0. 函数接口定义: int func(const int N); 其中N是用户传入的参数。N的值不超过int类型的范围。如果参数N是水仙花数,则返回1,否则返回0。 1.1.1数据处理 数据表达:设置了x,y,z为自变量,x,y,z分别代表一个三位数上的百十个位数,用的是整型变量 数据处理:运用了if-else语句,循环结构和分支结构 函数参数:int main()主函数名称,为整型函数,形参N;xingint func(const int N);为整形函数,实参x,y,z 1.1.2实验代码截图 1.1.3 造测试数据 输入数据 输出数据 说明 163 0 各位数字的立方和与数本身不等

[题解]openjudge-回文素数

与世无争的帅哥 提交于 2019-12-02 10:36:38
提交情况 原题链 解题思路 整体思路:首先生成一个满足为n位的回文数,再判断其是否为素数。 细节问题:我们枚举一个长度为10^(n - 1) ÷ 2长度的数,将这个数的前(n - 1) ÷ 2 - 1个数放到原数的后方生成新的回文数。example:我们需要一个长度为3为的回文数,那么我们要枚举的数是从10~99。假设我们枚举的一位数为10。那么最后生成的数即是101。 源代码 #include <bits/stdc++.h> using namespace std; int a[1000010]; const int mod = 7; inline int make(int tmp){ int ans = tmp; tmp /= 10; while(tmp > 0){ ans = ans * 10 + tmp % 10; tmp /= 10; } return ans; } inline bool prime(int k){ if(k < 2)return false; if(k == 2)return true; for(int i = 2;i * i <= k;i++){ if(k % i == 0)return false; } return true; } int main(){ int n; cin>>n; if(n % 2 == 0){ if(n == 2){

C语言I—2019秋作业05

六月ゝ 毕业季﹏ 提交于 2019-12-02 06:56:07
这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2019-2/homework/9830 我在这个课程的目标是 对函数的定义和调用有初步的认识,能模仿编程 这个作业在那个具体方面帮助我实现目标 用C语言编写程序,能生成乘方表与阶乘表 参考文献 《Markdown基本语法》《c语言程序设计》《ACM解题》 1.PTA实验作业 1.1水仙花数判断 题目内容描述:本题要求实现一个函数,判断任一整数是否为水仙花数(必须是三位数,且数的每一位上数字的立方和与数本身相等)。例如153=1^3+5^3+3^3=1+125+27=153,而1或155则不是水仙花数。如果是水仙花数,则函数返回1,否则返回0. 1.1.1数据处理 数据表达:1.定义变量sum,a,N 2.sum是三位数的每一位上的数字的立方的和 3.此编码使用了while语句和if语句 数据处理:1.表达式: sum += (a % 10) * (a % 10) * (a % 10) 2.流程结构:循环结构和分支结构 函数参数:1.主调函数名称:main 2.被调函数名称:func 3.被调函数类型:整型函数 1.1.2实验代码截图 1.1.3造测试数据 输入数据 输出数据 说明 108 0 非素数 370 1 素数 666 0 非素数

C语言I作业05

偶尔善良 提交于 2019-12-02 06:49:15
一、本周教学内容&目标 第2章 用C语言编写程序-函数 2.5 生成乘方表与阶乘表。使学生对函数的定义和调用有初步的认识,能模仿编程。 二、本周作业头 问题 答案 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/2019TA/homework/9833 我在这个课程的目标是 以C为基础,进一步学习java与C++ 这个作业在那个具体方面帮助我实现目标 练习markdown语法以及自主寻找资料的能力 参考文献 百度 三、本周作业 1. PTA作业 1.1 编写函数fun,其功能是:判断一个整数的各位数字平方之和能否被5整除,可以被5整除则返回1,否则返回0。 . 1.1.1 数据处理 -数据表达:提出整形变量sum,i,result,以及定义函数prime,用来解决数字平方能否被5整除,变量i用于进行循环,变量sum用于存储余数来进行进一步的判断是否为素数,result赋值1,用于在接下来的运行中对于此输入数字是否为素数而改变值,以返回此值进行验证是否为素数; -数据处理:以作为被调函数的定义函数的主体,其中包含着判断语句if和循环语句for,来进行程序运行,其中if判断出非素数的可能(素数肯>=2),当if语句判断完毕,就进入for循环来进行赵卒为素数的i,如果非素数则输出返回值0