算法笔记day02

找两个整数之间的所有素数

在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    int t;
    if(a>b){
    	t=a;
    	a=b;
    	b=t;
	}
	int i,flag;
	for(i=a;i<b;i++){
		flag=1;
		for(int j=2;j<=(int)sqrt(i);j++){//注意是小于等于  
			if(i%j==0){
				flag=0;
				break;
			}
		}
		
		if(flag==1) printf("%d ",i);
	}
    return 0;
}


奇特的分数数列

在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    double a,b,sum;
	a=1,b=2;
	sum=0;
	for(int i=0;i<20;i++){
		sum=sum+b/a;
		int t=a;
		a=b;
		b=t+b;
	} 
	printf("%.6lf",sum);
    return 0;
}


整数的位数

在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    double n;
    scanf("%lf",&n);
    int k=(int)n;
    int cnt=0;
    while(k>0){
    	cnt++;
    	k=k/10;
	}
	printf("%d\n",cnt);
    return 0;
}


粒子裂变

在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    int a,b,t,na,nb;
    na=a=1;
    b=nb=0;
    scanf("%d",&t);
    for(int i=0;i<t;i++){
    	a=nb;
    	b=3*na+2*nb;
    	na=a;
    	nb=b;
	}
	printf("%d %d",a,b);
    return 0;
}


危险的组合(考察递归)

在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int f(int n){
	if(n==1||n==2) return 0;
	else if(n==3) return 1;
	else if(n==4) return 3;
	else return f(n-1)*2+pow(2,n-4)-f(n-4);
}
int main()
{
    int n;
    scanf("%d",&n);
    printf("%d\n",f(n));
    return 0;
}


除法

在这里插入图片描述

#include <cstdio>
#include <cstring>
int visit[10] = {0} ;
bool judge(int a, int b)
{
	if (b > 98765)return 0;//b大于最大值五个数组成的(5,6,7,8,9) 
	memset(visit, 0, sizeof(visit));
 
	//判断是否有重复元素的方法
	if (a < 10000)
		visit[0] = 1; 
 
    //列出a,b不同位置上的数 
	while (a != 0){
		visit[a % 10] = 1;
		a /= 10;
	}
	while (b != 0){
		visit[b % 10] = 1;
		b /= 10;
	}
	
	//看是否a,b中都包含0,1,2,3,4,5,6,7,8,9 
	for (int i = 0; i < 10; i++){
		if (visit[i] == 0)
			return false;
	}
	
	return true;
}
 
int main()
{ 
	int n;
	bool flag = true;
	scanf("%d", &n);
	for (int i = 1234; i < 100000; i++){
		if (judge(i, i*n)){
			printf("%05d/%05d=%d\n", i*n, i, n);
			flag = false;
		}				
	}
	
	if (flag)
		printf("There are no solutions\n");
	return 0;

}


  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值