C 练习实例36 - 求100之内的素数
题目:求100之内的素数。
程序分析:质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除。
程序源代码:
实例
// Created by www.runoob.com on 15/11/9.
// Copyright (c) 2015年 素材8网教程. All rights reserved.
//
#include<stdio.h>
#include<math.h>
int main()
{
int i,j,k,n=0;
for(i=2;i<=100;i++)
{
k=(int)sqrt(i);
for(j=2;j<=k;j++)
if(i%j==0) break;
if(j>k)
{
printf("%d ",i);
n++;
if(n%5==0)
printf("\n");
}
}
return 0;
}
以上实例输出结果为:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
C 语言经典100例
红途
471133417@qq.com
参考方案:
#include <stdio.h> #include <math.h> #include <stdbool.h> #include <stdlib.h> #include <sys/time.h> //素数判定 筛选法 int main(){ int num = 100; int i, j; //scanf("%d", &num); //getchar(); bool *b; b=(bool *)calloc(num + 1, sizeof(bool)); b[0] = false; for(i = 1; i <= num; i++){ if(i % 2 == 0){ b[i] = false; }else{ b[i] = true; } } for(int i = 3; i <= sqrt(num); i+=2){ if(b[i]){ for(j=i+i; j <= num; j+=i) b[j] = false; } } //输出素数 printf("2,"); for(i = 3; i <= num; i+=2){ if(b[i]){ printf("%d,", i); } } free(b); b=NULL; return 0; }红途
471133417@qq.com