2.编写函数判断某数是否为素数,如果是素数,则返回1,否则返回0,在main函数中调用该函数,输出100~200之间的所有素数,要求每行输出10个
#include <stdio.h>
int is_prime(int n){
if (n <= 1) {
return 0;
}
for (int i = 2; i*i <= n; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int count = 0;
for (int i = 100; i <= 200; i++) {
if (is_prime(i)) {
printf("%d ", i);
count++;
if (count % 10 == 0) {
printf("\n");
}
}
}
return 0;
}
参考如下:
#include<stdio.h>
#include <math.h>
int prime(int x)
{
int i;
int flag = 1;
for (i = 2; i <= sqrt(x); i++)
{
if (x % i == 0)
{
flag = 0;
break;
}
}
return flag;
}
int main()
{
int n = 100;
int count = 0;
for (; n <= 200; n++)
{
if (prime(n))
{
count++;
printf("%d ", n);
if (count % 10 == 0)
printf("\n");
}
}
printf("\ncount=%d", count);
}
/*2.编写函数判断某数是否为素数,如果是素数,则返回1,否则返回0,
在main函数中调用该函数,输出100~200之间的所有素数,要求每行输出10个*/
#include <stdio.h>
#include <math.h>
int prime(int m);
int main(){
int i,j;
j=1;
for(i=100;i<201;i++){
if(prime(i)==1){
printf("%d ",i);
if(j==10){
printf("\n");
j=0;
}
j++;
}
}
return 0;
}
//判断素数的函数
int prime(int m){
int i,limit;
if(m<=1){/*小于等于1的数不是素数*/
return 0;
}else if(m==2){/*2是素数*/
return 1;
}else{/*其他情况:大于2的整数*/
limit=sqrt(m)+1;
for(i=2;i<=limit;i++){/*若m能被某个i整除,则m不是素数,返回0*/
if(m%i==0){
return 0;
}
}
/* 若循环正常结束,说明m不能被任何一个i整除,则m素数,返回1*/
return 1;
}
}
A:是的,这是可以做到的。每次执行pthread-create后,主程序可以调用pthread_join等待刚刚创建的线程退出后再创建下一个线程。
#include <stdio.h>
#include <math.h>
// 判断一个数是否为素数
int is_prime(int n)
{
// 1不是素数
if(n == 1)
{
return 0;
}
// 2和3是素数
if(n == 2 || n == 3)
{
return 1;
}
// 不是2且为偶数的直接排除
if(n % 2 == 0)
{
return 0;
}
// 从3到n的开平方数取整+1,如果有能整除的就不是素数
int i = 0;
int s = (int)sqrt(n) + 1;
for(i = 3; i < s; i += 2)
{
if(n % i == 0)
{
return 0;
}
}
return 1;
}
int main()
{
int count = 0; // 计数器
int num = 100;
while(num <= 200)
{
if(is_prime(num))
{
printf("%d ", num);
count++; // 计数器加1
if(count % 10 == 0) // 每10个数字换行
{
printf("\n");
}
}
num++;
}
return 0;
}