编写C程序,求100——200间的全部素数,分别用while 和do-while 语言编写, thanks~

2025-03-07 10:44:19
推荐回答(2个)
回答1:

/*
101 <--> 101
103 <--> 103
107 <--> 107
109 <--> 109
113 <--> 113
127 <--> 127
131 <--> 131
137 <--> 137
139 <--> 139
149 <--> 149
151 <--> 151
157 <--> 157
163 <--> 163
167 <--> 167
173 <--> 173
179 <--> 179
181 <--> 181
191 <--> 191
193 <--> 193
197 <--> 197
199 <--> 199
Press any key to continue
*/
#include
#include

int isPrime1(int n) {
int flag = 1,i = 2;
while(i <= sqrt(n) && flag == 1) {
if(n%i == 0) flag = 0;
i++;
}
return(flag);
}

int isPrime2(int n) {
int flag = 1,i = 2;
do {
if(n%i == 0) flag = 0;
i++;
}while(i <= sqrt(n) && flag == 1);
return(flag);
}

int main() {
int i;
for(i = 101; i < 200; i += 2) {
if(isPrime1(i)) printf("%d <--> ",i);
if(isPrime2(i)) printf("%d\n",i);
}
return 0;
}

回答2:

while:
#include "stdio.h"
#include "math.h"
int main()
{
int i=100;
while(i<=200)
{
if(isPrimeNum(i) ==1) printf("%d\n",i);
++i;
}
return 0;
}

int isPrimeNum(int num)
{
if (num % 2 == 0)
{
return 0;
}
int iSqrt = sqrt(num);
int i;
for (i = 3; i <= iSqrt; i+=2)
{
if (num % i == 0)
{
return 0;
}
}
return 1;
}

do-while:
#include "stdio.h"
#include "math.h"
int main()
{
int i=100;
do
{
if(isPrimeNum(i) ==1) printf("%d\n",i);
++i;
}while(i<=200);
return 0;
}

int isPrimeNum(int num)
{
if (num % 2 == 0)
{
return 0;
}
int iSqrt = sqrt(num);
int i;
for (i = 3; i <= iSqrt; i+=2)
{
if (num % i == 0)
{
return 0;
}
}
return 1;
}