15 条题解
-
2
快一点的方法:筛素数
#include <cstdio> int n , m , ans; bool un_prime[50005] ; inline int reader(){//快读(也可以cin / scanf,没快多少) int it = 0, chr = getchar(); while('0' > chr || chr > '9') chr = getchar(); while('0' <= chr && chr <= '9') it = (it << 1) + (it << 3) + chr - '0' , chr = getchar() ; return it ; } int main(){ m = reader() ;//读取 n = reader() ;//读取 for(int i = 2 ; i <= n ; i ++) //筛素数 //从2开始到n结束 if(!un_prime[i]){ //如果前面没有任何是i的因数 ans += (i >= m) ; //若i >= m 就说明这个数在范围 //找到的数量增加1 for(int j = i * 2 ; j <= n ; j += i) un_prime[j] = true ; //i的所有倍数都是合数 } printf("%d" , ans) ; //输出 return 0 ; }
-
2
先要会写判断一个数是否是质数的代码
int temp=i; bool b=false; for(int j=2;j<temp;j++) { if(temp%j==0) { b=true; break; } } //判断temp是否质数,如果是b的值为false,不是b的值为true
(如果会函数,可以将以上代码封装到函数中,直接循环中调用函数就可以)
将以上代码放到m~n的循环中,每次判断i的值是否为质数
for(int i=m;i<=n;i++) { int temp=i; bool b=false; for(int j=2;j<temp;j++) { if(temp%j==0) { b=true; break; } } //是质数计数变量num累加 if(b==false) num++; }
最后输出num
-
1
已AC,请放心食用!!!
#include <iostream> using namespace std; void prime(int m, int n, int sum, bool p) { for (int i = m; i <= n; i++) { if (i == 1) { continue; } p = true; for (int j = 2; j <= i - 1; j++) { if (i % j == 0) { p = false; break; } } if (p) { sum += 1; } } cout << sum; } int main() { int m, n, sum = 0, p; cin >> m >> n; prime (m, n, sum, p); return 0; } //已AC //仅供参考,请不要抄袭
-
1
昨天上编程课时学到了函数,今天便来用函数解题,顺便练练手,唯一的感觉就是:函数真的太好用了!
已AC,请放心食用
#include <iostream> using namespace std; void prime(int m, int n, int sum, bool p) { for (int i = m; i <= n; i++) { if (i == 1) { continue; } p = true; for (int j = 2; j <= i - 1; j++) { if (i % j == 0) { p = false; break; } } if (p) { sum += 1; } } cout << sum; } int main() { int m, n, sum = 0, p; cin >> m >> n; prime (m, n, sum, p); return 0; }
养成好习惯,看后点个赞( •̀ ω •́ )✧!
-
1
#include <iostream> #include <cmath> using namespace std; int main() { int m, n; cin >> m >> n; int sum = 0; for (int i = m; i <= n; i++) { int judge = 1; if (i == 1)//1既不是质数也不是合数 { continue; } for (int j = 2; j <= sqrt(i); j++) { if (judge == 0) { continue; } if (i % j == 0) { judge = 0; } } if (judge == 1) { sum++; } } cout << sum; return 0; }
-
1
此题有多种解法: ①无函数有num
#include <iostream> using namespace std; int main () { int m, n, num1 = 0, num2 = 0; cin>> m >> n; if (m == 1) { m++; } for (int i = m; i <= n; i++) { num1 = 0; for (int j = 2; j < i; j++) { if (i % j == 0) { num1++; break; } } if (num1 == 0) { num2++; } } cout << num2 << endl; return 0; }
②无函数有bool:
#include <iostream> using namespace std; int m, n, sum = 0; int main () { bool flag = true; cin >> m >> n; for (int i = m; i <= n; i++) { flag = true; for (int j = 2; j < i; j++) { if (i % j == 0) { flag = false; break; } } if (flag) { sum++; } } cout << sum << endl; return 0; }
③有函数(有返回值)
#include <iostream> using namespace std; bool prime(int x) { for(int i = 2; i < x; i++) { if(x % i == 0) { return false; } } return true; } int main() { int m, n, sum = 0; cin >> m >> n; for(int i = m; i <= n; i++) { if(prime(i) == true) { sum++; } } cout << sum << endl; return 0; }
以上几种代码都是AC过的,大家可以选择自己理解的方法来编。
-
0
#include <bits/stdc++.h> using namespace std; bool prime(int n) { for (int i = 2; i <= sqrt(n); i++) if (n % i == 0) return false; return true; } int main() { ios::sync_with_stdio(false); cin.tie(NULL);cout.tie(NULL); int n, m, sum = 0; cin >> m >> n; for (int i = m; i <= n; i++) if (prime(i)) sum++; cout << sum; return 0; }
-
0
`
#include <iostream>//hetao3097453 using namespace std;//使用素数函数,看返回值 bool sushu(int n)//137ms 420kib { for(int i = 2;i < n;i++) { if(n % i == 0) { return false; } } return true; } int main() { int m,n,num = 0; cin >> m >> n; for(int i = m;i <= n;i++) { if(sushu(i)) { num++; } } cout << num; return 0; }
- 1
信息
- ID
- 64
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 6
- 标签
- 递交数
- 675
- 已通过
- 221
- 上传者