标签:day09 int 最大公约数 cin while 循环 using include
目录day09:while循环
while知识点
循环:如果条件为真,就一直执行,直到条件不为真
bool flag = true; //true, false, 1, 0
while(flag){
//循环体
}
//解释:如果满足flag为真,就执行循环体,直到flag不为真,退出
1. 输入n, 输出1-n
【题目描述】输入n, 输出1-n(1 2 3 4 5...n)。
int n; cin>>n;
int i=1;
while(i<=n){
cout<<i<<" ";
i++;
}
2. 平均分
【题目描述】考试结束后,老师想计算全体学生的平均分,你能帮助老师吗?
现在无法知道参考人数,但是知道参加考试的人都不是0分。
所以,提供给你的若干个考试成绩,以0作为计算的结束标志。
输入样例:90 0
输出样例:90
输入样例:90 89 90 0
输出样例:89.6667
#include <iostream>
using namespace std;
int main() {
double score, tot=0;
int pep=0; cin>>score;
while(score!=0) {
tot += score ;
pep++;
cin>>score;
}
cout<<tot/pep<<endl;
return 0;
}
3. 质数判断
【题目描述】判断给定的正整数n(保证在正整数范围内)是否为质数,是,输出yes,否则,输出no。
理论:如果n能被[2,n-1]中某个整数整除,则证明n是合数,不是质数(素数)
#include<bits/stdc++.h>
using namespace std;
int main() {
int i=2, n; bool flag=1; //假设n是质数
scanf("%d", &n);
while(i<n) {//i的取值范围 [2, n-1]
if(n%i==0) {//证明是合数
flag=0;
}
i++;
}
if(flag==0 || n<2) printf("合数");
else printf("质数");
return 0;
}
4. 输入一个正整数,输出其位数
【题目描述】输入一个正整数,输出其位数
输入样例:123
输出样例:3
#include<iostream>
using namespace std;
int main(){
int n, ans=1;//这个数至少是一位数
cin>>n;
while(n>9){
n /= 10;//去掉个位数
ans++;
}
cout<<ans;
return 0;
}
5. 输入任意两个自然数,求他们的最大公约数
#include<iostream>
using namespace std;
int main(){
int a,b; cin>>a>>b;
for(int i=min(a,b); i>=1; i--){
if(a%i==0 && b%i==0) {
cout<<i; break;
}
}
return 0;
}
补充知识:最大公约数&最小公倍数
求最大公约数的三种方法:
1.最小递减法
先找a,b的最小值,判断该值能否同时被a,b整除,如果可以该数就是答案,否则每次-1,继续判断,直到找到答案。
#include<iostream>
using namespace std;
int main() {
int a,b;
cin>>a>>b;
for(int i=min(a,b); i>=1; i--) {
if(a%i==0 && b%i==0) {
cout<<i;
break;
}
}
cout<<a;
return 0;
}
2.更相减损法
a-b=c,则a,b的最大公约数就是b,c的最大公约数,如果c=0,a就是答案。
3.辗转相除法
a/b=q...r,则a,b的最大公约数就是b,r的最大公约数,如果r=0,则b就是答案。
#include<iostream>
using namespace std;
int main() {
int a,b;
cin>>a>>b;
while(b!=0) {
int r = a%b;
a = b;
b = r;
}
cout<<a;
return 0;
}
求最小公倍数的两种方法:
1.最大递增法
先找a,b的最大值,判断该值能否同时整除a,b,如果可以该数就是答案,否则每次+1,继续判断,直到找到答案。
#include<iostream>
using namespace std;
int main() {
int a,b; cin>>a>>b;
for(int i=max(a,b); ; i++) {
if(i%a==0 && i%b==0) {
cout<<i;
break;
}
}
return 0;
}
2.定理法
两个数的乘积等于这两个数的最大公约数与最小公倍数的乘积。
标签:day09,int,最大公约数,cin,while,循环,using,include 来源: https://www.cnblogs.com/hellohebin/p/15153160.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。