数字游戏。

题目描述
​ 给定两个四位正整数 a,b,找出这两个数之间(含)所有满足以下条件的数:
​ 1.这个四位数能被 6整除;
​ 2.千位数字与百位数字构成的两位数 AB是一个质数;
​ 3.十位数字与个位数字构成的两位数 CD是一个完全平方数。
​ 完全平方数:可以写成另一个数的平方的数,比如 16(42),25(52)。

输入
​输入两个四位正整数 a,b。(1000≤a≤b≤9999)

输出
输出两行。
​第一行为从 a到 b之间所有满足条件的数,两个数字之间用空格隔开,最后一个数后没有空格。 第二行为满足条件的数的个数 n。

#include <stdio.h>
#include <math.h>
int main() {
    int a,b;
    int num = 0;
    int i,j,k;
    scanf("%d%d", &a, &b);
    for (i = a; i <= b; i++) {
        int A = i / 1000;
        int B = (i % 1000) / 100;
        int C = ((i % 1000) % 100) / 10;
        int D = ((i % 1000) % 100) % 10;
        for (j = 2 ; j <= sqrt(10 * A + B); j++) {
            if ((10 * A + B) % j == 0) {
                break;
            }
        }
        if (j > sqrt(10 * A + B)) {
            //printf("%d ",10 * A + B);
            for (k = 0; k <= 9; k++) {
                if (10 * C + D == k * k) {
                    //printf("%d",10 * C + D);
                    if (i % 6 == 0) {
                         num++;
                    if (num != 1)
                        printf(" ");
                   printf("%d",i);
                    }
                   
                }
            }
        }
    }
    printf("\n");
    printf("%d\n",num);
    return 0;
}
#include <iostream>
using namespace std;

int is_prime(int n) {
	for (int i = 2; i * i <= n; i++) {
		if (n % i == 0) 
			return 0;
	}
	return 1;
}
int is_pow(int n) {
	switch (n) {
	case 1:
	case 4:
	case 9:
	case 16:
	case 25:
	case 36:
	case 49:
	case 64:
	case 81: return 1;
	}
	return 0;
}
int main()
{
	int a, b,cnt = 0;
	cin >> a >> b;
	int flag = 0;
	for (int i = a; i <= b; i++) {
		if (is_prime(i/100) && i % 6 == 0 && is_pow(i % 100 )){
			if (flag) cout << " ";
			cout << i;
			flag = 1;
			cnt++;
		}
	}
	cout << endl << cnt;
	return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yitahutu79

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值