一点思路都没有(>﹏<)

一个八位数前四位是一个完全平方数后四位是比前四位大32的素数编程输出这种数

具体代码实现和解释如下,望采纳

#include <stdio.h>
#include <math.h>

// 判断一个数是否是素数
int is_prime(int n) {
  if (n < 2) {
    return 0;
  }

  int max = (int)sqrt(n);
  for (int i = 2; i <= max; i++) {
    if (n % i == 0) {
      return 0;
    }
  }
  return 1;
}

int main() {
  // 枚举前四位数字
  for (int i = 1; i <= 999; i++) {
    // 判断是否是完全平方数
    if (sqrt(i) == (int)sqrt(i)) {
      // 计算后四位数字
      int n = i + 32;
      // 判断是否是素数
      if (is_prime(n)) {
        // 输出符合条件的八位数
        printf("%08d\n", i * 10000 + n);
      }
    }
  }
  return 0;
}

上面程序中使用了 C 语言的 sqrt 函数来判断一个数是否是完全平方数,并定义了一个名为 is_prime 的函数来判断一个数是否是素数。然后使用一个循环枚举前四位数字,如果前四位数字是完全平方数,就计算后四位数字,并判断后四位数字是否是素数。如果符合条件,就输出这个八位数。

  • 完全平方数,即能表示成另一个整数的平方的形式的数
  • 素数,也就是质数,只有1和它本身两个因子。
  • 四位数,那就从1000~9999遍历;
    两种方式,
  1. 先判素数,素数+32之后,判是不是完全平方数【用sqrt 取根】
  2. 先判完全平方数,完全平方数-32之后,判质数

大概思路就是:int i从32到99,判断i * i+32是不是素数,如果是,则i * i * 10000+i * i+32符合要求