C 练习实例12
题目:判断101到200之间的素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
实例
// Created by www.facesoho.com on 15/11/9.
// Copyright © 2015年 小鸟启蒙. All rights reserved.
//
#include <stdio.h>
int main()
{
int i,j;
int count=0;
for (i=101; i<=200; i++)
{
for (j=2; j<i; j++)
{
// 如果j能被i整出在跳出循环
if (i%j==0)
break;
}
// 判断循环是否提前跳出,如果j<i说明在2~j之间,i有可整出的数
if (j>=i)
{
count++;
printf("%d ",i);
// 换行,用count计数,每五个数换行
if (count % 5 == 0)
printf("\n");
}
}
return 0;
}
以上实例输出结果为:
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199

文人墨客
参考方法:
#include <stdio.h> #include <math.h> #define M 101 #define N 200 int _isPrime(int n) { int i=2; while(i<=((int)sqrt((double)n))+1) { if(n%i==0) return 0; else ++i; continue; } return 1; } int main() { int n,i; for(n=M;n<=N;n++) { _isPrime(n)?printf("%-4d 是素数\n",n):printf("%-4d 不是素数\n",n); } return 0; }文人墨客
参考方法:
#include <stdio.h> int isPrime(int x){ int i; for(i=2;i*i<=x;i++){ if(x%i==0) return 0; } return 1; } int main(){ int i,count=0; for(i=101;i<=200;i++){ if(isPrime(i)){ printf("%d ",i); count++; if(count%5==0) printf("\n"); } } return 0; }文人墨客
参考方法:
#include<stdio.h> #include<math.h> int IsPrime(int n) { int i; for(i = 2; i <= sqrt(n); i++) { if(n%i == 0) return 0; } return 1; } int main(void) { int i, j = 0; for(i = 101; i <= 200; i++) { if(IsPrime(i)) { printf("%d ",i); j++; if(j%5 == 0) printf("\n"); } } return 0; }文人墨客
参考方法:
#include<stdio.h> int main() { int i; for(i=101;i<200;i++) { if(i%2!=0&&i%3!=0&&i%5!=0&&i%7!=0&&i%11!=0&&i%13!=0&&i%17!=0) printf("%d\n",i); } return 0; }文人墨客
参考方法:
#include<stdio.h> void f10(){ int i=0;//设置循环因子:被除数 int j=0;//除数 int num=0;//计数变量 printf("101到200间的素数:\n"); for(i=101;i<=200;i++){ int counter=0;//计数器,每次里循环计数器都会清零 for(j=1;j<=i;j++){ if(i%j==0){ counter++; } } //里循环结束后判断被整除的次数 if(counter==2){ printf("%d\n",i); num++; } } printf("统计:一共%d个素数\n",num); } int main(){ f10(); return 0; }文人墨客
参考方法:
#include<stdio.h> #include<math.h> int main() { int i,j,k; for(i=101;i<201;i++) { k=sqrt(i); //如果i不能被2~√i间任一整数整除,i必定是素数 for(j=2;j<=k;j++) if(i%j==0) break; if(j>k) printf("%d\n",i); // else printf("%d is not aprime number",i); } }