水题小结1
1. 判断素数 #include<bits/stdc++.h> bool IsPrime(int x){ if(x==1) return false; if(x==2||x==3) return true; if(x%6!=1&&x%6!=5) return false; for(int i=5;i*i<=x;i+=6){ if(x%i==0||x%(i+2)==0) return false; } return true; } int main(){ int x;scanf("%d",&x); if(IsPrime(x)) printf("%d is a prime number",x); else printf("%d is not a prime number",x); return 0; } #include <bits/stdc++.h> using namespace std; void check(int a) { for(int i=2;i<=sqrt(a);i++) { if(a%i==0) { cout<<"no"<<endl; return ; } } cout<<"yes"<<endl; } int main(){ int n; cin>>n; if(n==1) cout<<"no"<<endl; else if(n==2||n==3) cout<<"yes"<<endl; else check(n); return 0; } 素数:除了1和它本身,没有其他的因数。1不是素数。 2.(10)用递归,将不确定位数的整数n转成字符串 #include<bits/stdc++.h> void Conv(int n){ if(n){ Conv(n/10); char c=n%10+'0'; putchar(c); } } int main(){ int n;scanf("%d",&n); Conv(n); return 0; }
1.最大公因数和最小公倍数 #include <bits/stdc++.h> using namespace std; int gcd(int a,int b){ return b==0?a:gcd(b,a%b); } int main(){ int m,n; cin>>m>>n; int g=gcd(m,n); int lcm=m*n/g; cout<<g<<endl<<lcm<<endl; return 0; } 最大公因数:用辗转相除法,1.a%b得余数c 2.若c=0.则b是最大公因数 3.若c不等于0,则继续执行1,直到c为0,b即是最大公因数; 27%15=12,15%12=3,12%3=0,所以3是最大公因数; 最小公倍数:两数相乘除以它们的最大公因数 2.水仙花数 #include <bits/stdc++.h> using namespace std; bool check(int x){ int num=x; int sum=0; while(x){ int a=x%10; sum+=a*a*a; x/=10; } return num==sum; } int main(){ for(int i=100;i<=999;++i){ if(check(i)) printf("%d\n",i); } return 0; } 3.1000以内的完数 #include <bits/stdc++.h> using namespace std; bool check(int num,int *arr,int &cnt){ int sum=1; cnt=0; arr[cnt++]=1; for(int i=2;i*i<=num;++i){ if(num%i==0){ arr[cnt++]=i; arr[cnt++]=num/i; sum+=i+num/i; } } return num==sum; } int main(){ int arr[105]; int cnt=0; for(int i=1;i<=1000;++i){ if(check(i,arr,cnt)){ printf("%d,its factors are ",i); for(int i=0;i<cnt;++i) printf("%d%c",arr[i],i==cnt-1?'\n':' '); } } return 0; }