素数应用

输入一个数 分解尾三个数想乘 如果三个数其中有两个为素数->yes 否则no

 1 //素数升级
 2 //功能:??已知N是正整数,?它可拆写成三个正整数N1、N2和N3之和的形式N=N1+N2+N3。?
 3 //请编程序打印出满足上式的全部组合,并当N1、N2和N3中至少有两个是素数时打印“YES”否则打印“NO”。?
 4 //如N = 5时输出:?
 5 //5 = 1 + 1 + 3?????NO?
 6 //5 = 1 + 2 + 2?????YES?
 7 //5 = 1 + 3 + 1?????NO?
 8 //5 = 2 + 1 + 2?????YES?
 9 //5 = 2 + 2 + 1?????YES?
10 //5 = 3 + 1 + 1?????NO?
11
12 #include <stdio.h>
13 #include <stdlib.h>
14 #include <math.h>
15
16 int judgePrim(int n);
17 int main()
18 {
19     int sum = 0;
20     int m = 0;
21     int i;
22     printf("请输入一个数");
23     scanf_s("%d", &m);
24     for (i = 1; i < m; i++)
25     {
26         for (int j = 1; j < m; j++)
27         {
28             int k = m - i - j;
29             if (i + j + k == m&&k>0)
30             {
31                 sum = judgePrim(i) + judgePrim(j) + judgePrim(k);
32                 printf("%d+%d+%d=%d\t", i, j, k, m);
33                 if (sum >= 2)
34                 {
35                     printf("YES\n");
36                 }
37                 else
38                 {
39                     printf("no\n");
40                 }
41             }
42
43         }
44     }
45     system("pause");
46     return 1;
47 }
48
49 int judgePrim(int n)
50 {
51     if (n == 1)
52     {
53         return 0;
54     }
55     else if (n == 2 || n == 3)
56     {
57         return 1;
58     }
59     else
60     {
61         for (int i = 2; i <= (int)sqrt((double)n); i++)
62         {
63             if (n%i == 0)
64                 return 0;
65         }
66     }
67     return 1;
68 }

时间: 2024-10-13 19:40:16

素数应用的相关文章

177. 有限制的素数

177. [USACO Jan07] 有限制的素数 ★   输入文件:qprime.in   输出文件:qprime.out   简单对比 时间限制:1 s   内存限制:128 MB Farmer John 开始给奶牛们标记上素数的牌子,贝茜注意到了这一切,她对各种数的牌子很好奇. 请帮助贝茜算出从A到B (1 ≤ A ≤ B ≤ 4,000,000; B ≤ A + 1,000,000; B ≤ A + 2,000,000 ),其中包含数字D的素数的个数. 素数是只有两个两个约数(1 和 它

尝试用filter()函数删除1~100的素数

题目来自"廖雪峰的官方网站--Python教程",尝试用filter()函数删除1~100的素数: def is_prime(n):     if n <= 1:         return False     for s in range(2,n):         if n % s == 0:             return False     return True      print filter(is_prime,range(1,101) 素数的定义: 质数(

今天练习了一下用python写函数,就把它记录到博客上吧 冒泡排序和素数判断

第一个是判断素数,先上代码吧: 1 from math import sqrt 2 def is_prime(i): 3 if i == 2: 4 return True 5 elif i<2: 6 return False 7 elif i%2 == 0: 8 return False 9 else: 10 for n in range(3,int(sqrt(i)+1),2): 11 if i%n == 0: 12 return False 13 return True 这里用到了math包的

hdu 2136 筛法求素数以及一些细节上hxy做的优化

题目大意:每个数字都可以表示为一些素数的和,原因很显然:由算数基本定理可知,每一个数都可以表示为素数的乘积,自然也就可以表示为一些素数的和咯. 于是题目让我们求在这样的表示中出现的最大的素数是第几个素数. 思路:一开始想都没想,上了一个这样的代码. 1 #include <algorithm> 2 #include <cstring> 3 #include <cstdio> 4 using namespace std; 5 6 const int N = 1000000

POJ 2689 Prime Distance(素数区间筛法--经典题)

大致题意:给定[L,R]区间,找出区间内的每个素数 数据范围 : 1<=L< R<=2,147,483,647) R-L <=1,000,000. R的数值太大,所以不能直接筛[0,R]的,要空间和时间优化,用到区间筛法,另外注意不能用int,因为R和L都是满int的,中间有很多细节处理会爆int的,还要注意1不是素数,所以在区间筛中要特判一下,是个易错的地方 //1160K 16MS C++ 1539B #include<cstdio> #include<ios

NEFU120 梅森素数【Lucas-Lehmer判定】

题目链接: http://acm.nefu.edu.cn/JudgeOnline/problemshow.php?problem_id=120 题目大意: 给一个数p,若Mp = 2^p - 1是梅森素数,则输出"yes",否则输出"no". 思路: 这道题p小于62.Mp就小于2^62-1.如果直接进行素数判别会比较慢,用筛法的话数据量 又会很大.所以这里用了Lucas-Lehmer判定法则. Lucas-Lehmer判定法则具体步骤: 如果要判定的整数位Mp =

轻松搞定素数

素数判定 素数,我们在数学上早就学过了吧,还记得定义是什么吗,其定义是:一个大于1的自然数,除了1和它本身外,不能整除以其他自然数(质数)整除,素数又叫质数.我们在进行素数判定的时候就要从它的定义入手. 我们先来看一道例题. 素数判定 Description 对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y<=50),判定该表达式的值是否都为素数.   Input 输入数据有多组,每组占一行,由两个整数x,y组成,当x=0,y=0时,表示输入结

POJ 2635 The Embarrassed Cryptographer (同余线性方程+素数筛)

题目地址:POJ 2635 先用素数筛把10^6万以内素数筛出来.然后把输入的那个大数转化成数组,并且每三位存成一个数,这样可以节约内存和时间,然后利用同余线性的原理,对那个小整数以内的所有素数枚举,然后判断是否整除,找到最小的能被整除的. 代码如下: #include <iostream> #include <string.h> #include <math.h> #include <queue> #include <algorithm> #i

素数筛 模板

1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 5 using namespace std; 6 7 int prim[3000000]={2,3,5}; 8 //素数是分为基本素数{2,3}.阳素数{6N+1,N>=1}形式的.阴素数{6N-1,N>=1}形式的 9 //为了代码的好写,在这里这样写的 : 10 //数除了{2,3,5}为素数,其他的数可以写成6N,6N+1