素数

PTA L1-028 判断素数(C语言)

99封情书 提交于 2020-01-08 01:54:07
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200107212920142.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hdHVybHk=,size_16,color_FFFFFF,t_7 来源: CSDN 作者: Yaqsist 链接: https://blog.csdn.net/naturly/article/details/103882185

PTA:自测-2 素数对猜想 (20分)

强颜欢笑 提交于 2020-01-07 14:46:05
基本思路:先求出所有的素数对,然后在遍历一遍查看有多少对。 # include "stdio.h" # include "math.h" # include <cstdlib> # include <iostream> # include <queue> using namespace std ; int sushu ( int n ) { int i = 2 ; if ( n < 2 ) return 0 ; for ( ; i <= sqrt ( n ) ; i ++ ) { if ( n % i == 0 ) { return 0 ; } } return 1 ; } int main ( ) { queue < int > q ; int n = 0 ; scanf ( "%d" , & n ) ; int m = 0 ; int s = 2 ; for ( int i = 3 ; i <= n ; i ++ ) { if ( sushu ( i ) == 1 ) { if ( ( i - s ) == 2 ) { m ++ ; } s = i ; } } printf ( "%d" , m ) ; } 来源: CSDN 作者: 苏木George 链接: https://blog.csdn.net/weixin_44106306/article/details

[code] PTA 胡凡算法笔记 DAY50

只愿长相守 提交于 2020-01-06 21:30:34
文章目录 题目 A1059 Prime Factors 小结 题目 A1059 Prime Factors 题意 输入 n ,输出其所有素因子,通过 n= p1 ^ k1 * p2 ^ k2 * .... 形式。其中 pn 为质因子, kn 为该质因子出现次数,只有 kn>1 时才输出。 思路 核心点:构造素数表减轻时间复杂度;边计算边输出无需存储结果。需要考虑一下异常, n = 1 的情况以及当质因子大于我们设置的素数表中最大的值的情况。然后就是注意输出格式问题就好了。 test case 1 // 1 = 1 7 // 7 = 7 8 // 8 = 2^3 2147483647 // 2147483647 = 2147483647 2147483646 // 2147483646 = 2 3^2 7 11 31 151 331 Code in C++ # include <cstdio> # include <cmath> const int maxn = 100010 ; bool isPrime ( long long num ) { if ( num <= 1 ) return false ; for ( int i = 2 ; i <= std :: sqrt ( num ) ; ++ i ) { if ( num % i == 0 ) return false ; }

Java打印素数(质数)

我只是一个虾纸丫 提交于 2020-01-06 01:19:21
要求:打印 2 - 100000 当中的素数与非素数。(素数定义:在大于1的自然数中,除了1和它本身以外不再有其他因数) 1. 常规方式——对正整数n,如果用2到 之间的所有整数去除,均无法整除,则n为质数: // 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

7.8 月赛补题+cf 569div2

人走茶凉 提交于 2020-01-06 01:17:06
B(暴力 Q:统计两个正整数t1 、 t2 之间的所有数的约数个数和S,给出的两个数t1、t2为10000000以内的正整数。 A:暴力,在1到t2之间枚举因子r ,t2/r-t1/r 即t1~t2之间包含该因子的数的个数 ,求和即t 1 、 t2 之间的所有数的约数个数和 C(贪心,中位数 Q:http://47.96.116.66/problem.php?cid=1385&pid=2 A:关于改变中位数为目标值的贪心,修改次数最小的最优方案是 目标值大于当前中位数时,改变任意小于目标值的数为目标值; 目标值小于当前中位数时,改变任意大于目标值的数为目标值; 直到中位数改变 D(欧拉函数 从原点选择任意方向射线,对于给定c,问在(x,y)(|x| <= N , |y| <= N)范围内有多少方向恰好有c个整点; 1.由于对称性,只考虑 区域d:x〉=0 ,y〈=x 即可; 2.对于每一区域,任意一点(x,y)与原点连线所经整点数目为:min(n/(x/gcd),n/(y/gcd))在区域d内有 y〈=x, min(n/(x/gcd),n/(y/gcd)) 可化简为 n/(y/gcd) ; 3.由于 (y/gcd)与 (x/gcd)互质,对于满足 n/(x/gcd)= =c的x/gcd,所有比其小的与其互质的数可作为 (y/gcd)的取值。可满足的方案数即x/gcd的欧拉函数phi

筛法求100内素数

戏子无情 提交于 2020-01-04 01:51:22
# include <iostream> # include <cmath> # include <cstring> # include <iomanip> using namespace std ; const int n = 100 ; bool prime [ n + 1 ] ; int main ( ) { memset ( prime , 1 , sizeof ( prime ) ) ; prime [ 1 ] = false ; for ( int i = 1 ; i <= sqrt ( n ) ; i ++ ) { if ( prime [ i ] ) { for ( int j = 0 ; j <= n / i ; j ++ ) { prime [ i * j ] = 0 ; } } } ; for ( int i = 1 , cnt = 0 ; i < n ; i ++ ) { if ( prime [ i ] ) { cnt ++ ; cout << setw ( 5 ) << i ; if ( cnt % 5 == 0 ) cout << endl ; } } return 0 ; } 来源: CSDN 作者: a千里快哉风 链接: https://blog.csdn.net/weixin_45592404/article/details/103825676

1409:判决素数个数

眉间皱痕 提交于 2020-01-02 23:38:51
1409:判决素数个数 【题目描述】 输入两个整数XX和YY,输出两者之间的素数个数(包括XX和YY)。 【输入】 两个整数XX和YY(1≤X,Y≤1051≤X,Y≤105)。 【输出】 输出一个整数,表示XX,YY之间的素数个数(包括XX和YY)。 【输入样例】 1 100【输出样例】 25 代码 # include <iostream> using namespace std ; bool isprime ( int n ) { if ( n == 1 ) return false ; if ( n == 2 ) return true ; for ( int i = 2 ; i * i <= n ; i ++ ) if ( n % i == 0 ) return false ; return true ; } int main ( ) { int x , y , ans = 0 ; cin >> x >> y ; for ( int i = x ; i <= y ; i ++ ) if ( isprime ( i ) ) ans ++ ; cout << ans ; return 0 ; } 来源: CSDN 作者: hipoole 链接: https://blog.csdn.net/hipoole/article/details/103811323

7-19 输出100~200之间素数 (30分)

我们两清 提交于 2019-12-31 16:20:28
# include <stdio.h> # include <math.h> int main ( ) { int i , j , k ; int a [ 100 ] = { 0 } ; for ( i = 101 , k = 0 ; i < 200 ; ++ i ) { for ( j = 2 ; j <= sqrt ( i ) ; j ++ ) { if ( i % j == 0 ) { break ; } } if ( j > sqrt ( i ) ) { a [ k ] = i ; k ++ ; } } for ( i = 0 ; i < k ; ++ i ) { if ( ! ( i % 8 == 0 ) ) printf ( "__" ) ; if ( i % 8 == 0 && i != 0 ) { printf ( "\n" ) ; } printf ( "%d" , a [ i ] ) ; } } 101__103__107__109__113__127__131__137 139__149__151__157__163__167__173__179 181__191__193__197__199 来源: CSDN 作者: zhu_ct 链接: https://blog.csdn.net/weixin_45679864/article/details

1013 数素数

蹲街弑〆低调 提交于 2019-12-28 20:33:07
令​ P i P_i P i ​ 表示第 i 个素数。现任给两个正整数 M ≤ N ≤ 1 0 4 M≤N≤10^4 M ≤ N ≤ 1 0 4 ​​,请输出 P M P_M P M ​ 到 P N P_N P N ​ 的所有素数。 输入格式: 输入在一行中给出 M 和 N,其间以空格分隔。 输出格式: 输出 P M P_M P M ​ 到 P N P_N P N ​ 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。 输入样例: 5 27 输出样例: 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 Note 无。 # include <iostream> using namespace std ; const int maxn = 1000001 ; int prime [ maxn ] , pNum = 0 ; // prime数组存放所有素数,pNum为素数个数 bool p [ maxn ] = { 0 } ; // p[i] == 1表示i是素数或已经被筛过 void FindPrime ( int n ) { for ( int i = 2 ; i < maxn ; ++ i ) // 从2开始,i < maxn结束,注意不能写成i <= maxn

求N以内的所有质数(素数)

喜夏-厌秋 提交于 2019-12-27 05:26:50
质数定义:是指在大于1的自然数中,除了1和它本身以外不再有其他 因数 的自然数。 /** * 求n以内的质数(素数) * param int $n * return array */ function prime_numbers(int $n):array { $result = [2]; //偶数只有2是质数 for ($i = 3; $i <= $n; $i+=2) { //2以外的偶数都不是质数,所以只遍历奇数 $flag = 0; for($j = 3; $j < $n; $j+=2){ if($i % $j == 0){ $flag++; } } if($flag == 1){ $result[] = $i; } } return $result; } //example print_r(prime_numbers(10)); //output Array ( [0] => 2 [1] => 3 [2] => 5 [3] => 7 ) 来源: CSDN 作者: 青鬆下的坚躯 链接: https://blog.csdn.net/liuensong/article/details/103638241