C语言 超级素数 等待大神
发布网友
发布时间:2023-07-01 17:28
我来回答
共3个回答
热心网友
时间:2023-07-10 04:16
#include <stdio.h>
int prime(int n)
{
int i;
if (n == 1)
return 0;
for (i = 2; i * i <= n; i++)
if (n % i == 0)
return 0;
return 1;
}
int super_prime(int n)
{
do {
if (!prime(n))
return 0;
} while (n /= 10);
return 1;
}
int main(void)
{
int i;
int count = 0, sum = 0, max = 0;
for (i = 101; i < 10000; i++) {
if (super_prime(i)) {
count++;
sum += i;
max = i;
printf("%d\n", i);
}
}
printf("sum=%d, count=%d, max=%d\n", sum, count, max);
return 0;
}
因为你的计算范围 跨度在 3 位数和 4位数之间,所有原来的程序需要判断 i 是否大于 1000。
这样多麻烦啊,还不如直接起个函数 super_prime,直接调用之
热心网友
时间:2023-07-10 04:17
y1 = sushu(x);
z1 = x / 10;
y2 = sushu(z1);
z2 = x / 100;
y3 = sushu(z2);
if (y1 == 1 && y2 == 1 && y3 == 1) {
m = m + 1;
n = x;
k = k + n;
}
这些判断有问题,你这样算起来只能判断3位数吧,你分别判断了x,x / 10,x / 100这三个数是不是指数,但是在这个范围里x=101;x<=9999;x++明显有四位数,所以你的判断就不对了,再一个你没有判断每位数字都不为零
热心网友
时间:2023-07-10 04:17
什么是超级素数?