#第一个星期
##最大公约数的两种求法
40 96 40 96
40%96=56 96-40=56
56%40=16 56-40=16
40%16=8 40-16=24
8%8=0 24-16=8
16-8=8
###方法一:#include <stdio.h>
int main(){
int n = 0,m = 0;
scanf("%d %d",&n,&m);
if(n0||m0){
printf(“没有最大公数!\n”);
return 0;
}
for(;n%m!=0;){
int yu = n%m;
n = m;
m = yu;
}
printf(“最大公约数是:%d\n”,m);
return 0;
}
###方法二:#include <stdio.h>
int main(){
int m=0,n=0;
scanf("%d %d",&m,&n);
if(m0 || n0){
printf(“没有最大公约数!\n”);
}else{
int big = m>n?m:n;
int small = m>n?n:m;
for(;big-small!=0;){
int res = big-small;
big = res>small?res:small;
small = res>small?small:res;
}
printf(“最大公约数:%d\n”,big);
}
return 0;
}
##分解质因子问题
24=2223
#include <stdio.h>
int main(){
int num = 0;
scanf("%d",&num);
int n = 2;
int cnt = 0;
printf("%d=",num);
for(n=2;n<=num;n++){
if(num%n0){
if(cnt0){
printf("%d",n);//使第一个数输出前面没有号
}else{
printf("*%d",n);
}
cnt++;
num = num/n;
n–;//使n跳回原来的值
}
}
if(cnt==1){
printf(“X1”);
}
printf("\n");
return 0;
}
##双色球的两种解法(随机生成6个不重复的1-31的数字)
###方法一:
随机生成六个数并判断他们是否相同,如果相同重新生成
#include <stdio.h>
#include <time.h>
int main(){
srand(time(NULL));
int arr[6] = {0};//生成6个数
int i=0,j=0;
for(i=0;i<6;i++){
arr[i] = rand()%31+1;
for(j=0;j<i;j++){
if(arr[i] == arr[j]){
–i;//重复生成一个新的数
break;
}
}
}
for(i=0;i<6;i++){
printf("%d “,arr[i]);
}
printf(”\n");
return 0;
}
###方法二:
先生成31个号码,再从这31个号码里选出号码,被选中的就标记为1,不在下次选择范围
#include <stdio.h>
#include <time.h>
int main(){
srand(time(NULL));
int arr[31] = {0};//生成31个数
int i = 0;
for(i=0;i<6;i++){
int num = rand()%31;
if(arr[num] == 0){
arr[num] = 1;
printf("%d “,num+1);
}else{
–i;//重新生成一个新号码
}
}
printf(”\n");
for(i=0;i<31;i++){
if(arr[i]==1){
printf("%d “,i+1);
}
}
printf(”\n");
return 0;
}
这篇博客介绍了用C语言求解最大公约数的两种方法,包括辗转相除法和更相减损法,并展示了如何分解质因数。此外,还探讨了两种不同的随机生成双色球6个不重复数字的方法。
1140

被折叠的 条评论
为什么被折叠?



