c语言实训这道题是什么意思啊,萌新小白新上路看不懂求大神帮忙

2025-05-14 02:04:44
推荐回答(1个)
回答1:

C语言程序:

#include 
#include 

int isPrime1(int num, int *c);
int isPrime2(int num, int *c);
int isPrime3(int num, int *c);

void main()
{
int n, c1, c2, c3;

printf("%-8s%-20s%-20s%-20s\n", "素数", "算法1循环次数", "算法2循环次数", "算法3循环次数");
for(n=100; n<=200; n++)
{
if(isPrime1(n, &c1) == 1)
{
isPrime2(n, &c2);
isPrime3(n, &c3);
printf("%-8d%-20d%-20d%-20d\n", n, c1, c2, c3);
}
}
}

//算法1
int isPrime1(int num, int *c)
{
int i;

for(i=2; i if(num % i == 0)
break;

*c = num - 2;

return (i < num ? 0 : 1);
}

//算法2
int isPrime2(int num, int *c)
{
int i;

for(i=2; i<=num/2; i++)
if(num % i == 0)
break;

*c = num/2 - 1;

return (i <= num/2 ? 0 : 1);
}

//算法3
int isPrime3(int num, int *c)
{
int i, k = (int)(sqrt(num));

for(i=2; i<=k; i++)
if(num % i == 0)
break;

*c = k - 1;

return (i <= k ? 0 : 1);
}


运行测试: