一、素数判定
问题1:从键盘输入m,n,在屏幕上按每行10个的格式输出m~n之间的全部素数
输入
两个整数m n
输出
m~n间的素数,每行10个,每个数后用空格隔开。如果m和n为素数则包含。
样例输入 Copy
100 200
样例输出 Copy
101 103 107 109 113 127 131 137 139 149
151 157 163 167 173 179 181 191 193 197
199
代码:
#include<iostream> #include<cmath> using namespace std; bool isprime1(int s); bool isprime2(int s); int main(){ int m,n; cin>>m>>n; int temp[10000],vis=1; for(int i=m;i<=n;i++){ //if(isprime1(i)==true){ if(isprime2(i)==true){ temp[vis++] = i; } } for(int i=1;i<vis;i++){ if(i%10==0){ printf("%d\n",temp[i]); }else{ printf("%d ",temp[i]); } } cout<<endl; return 0; } bool isprime1(int s){ if(s<=1){ return false; } int str = (int)sqrt(1.0*s); for(int i=2;i<=str;i++){ if(s%i==0){ return false; } } return true; } bool isprime2(int s){ if(s<=1){ return false; } for(int i=2;i*i<=s;i++){ if(s%i==0){ return false; } } return true; }
问题2:寻找素数对
哥德巴赫猜想大家都知道一点吧.我们现在不是想证明这个结论,而是想在程序语言内部能够表示的数集中,任意取出一个偶数,来寻找两个素数,使得其和等于该偶数.
做好了这件实事,就能说明这个猜想是成立的.
由于可以有不同的素数对来表示同一个偶数,所以专门要求所寻找的素数对是两个值最相近的.
Input:输入中是一些偶整数M(5<M<=10000).
Output:对于每个偶数,输出两个彼此最接近的素数,其和等于该偶数.
Sample Input:
20 30 40
Sample Output:
7 13 13 17 17 23
代码:
#include <cstdio> #include <iostream> #include <cstring> #include <algorithm> using namespace std; int a[10010]; int main(){ for(int i=2;i<10000;i++){ int flag = 0; for(int j=2;j*j<=i;j++){ if(i%j==0){ flag = 1; break; } } if(flag==0){ a[i] = 1; } } int n; while(cin>>n){ for(int i=n/2;i>=2;i--){ if(a[i]==1&&a[n-i]==1){ cout<<i<<" "<<n-i<<endl; break; } } } return 0; }
二、欧几里得算法
问题:a/b + c/d
给你2个分数,求他们的和,并要求和为最简形式。
Input:输入首先包含一个正整数T(T<=1000),表示有T组测试数据,然后是T行数据,每行包含四个正整数a,b,c,d(0<a,b,c,d<1000),表示两个分数a/b 和 c/d。
Output:对于每组测试数据,输出两个整数e和f,表示a/b + c/d的最简化结果是e/f,每组输出占一行。
Sample Input:
2 1 2 1 3 4 3 2 3
Sample Output:
5 6 2 1
代码:
#include <cstdio> #include <iostream> #include <cstring> #include <algorithm> using namespace std; int gcd(int n,int m); int main(){ int t; cin>>t; while(t--){ int a,b,c,d; cin>>a>>b>>c>>d; int mu = b*d; int zi = a*d+b*c; cout<<(int)(zi/gcd(zi,mu))<<" "<<(int)(mu/gcd(zi,mu))<<endl; } return 0; } int gcd(int n,int m){ if(m==0){ return n; } return gcd(m,n%m); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结