C 练习实例12
题目:判断 101 到 200 之间的素数。
程序分析:判断素数的方法:用一个数分别去除 2 到 sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
实例 1
// Created by www.runoob.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 <stdbool.h>
// 函数:判断一个数是否为素数
bool isPrime(int num) {
if (num <= 1) return false;
if (num <= 3) return true;
if (num % 2 == 0 || num % 3 == 0) return false;
for (int i = 5; i * i <= num; i += 6) {
if (num % i == 0 || num % (i + 2) == 0) return false;
}
return true;
}
int main() {
printf("素数在 101 到 200 之间的列表:\n");
for (int i = 101; i <= 200; i++) {
if (isPrime(i)) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
#include <stdbool.h>
// 函数:判断一个数是否为素数
bool isPrime(int num) {
if (num <= 1) return false;
if (num <= 3) return true;
if (num % 2 == 0 || num % 3 == 0) return false;
for (int i = 5; i * i <= num; i += 6) {
if (num % i == 0 || num % (i + 2) == 0) return false;
}
return true;
}
int main() {
printf("素数在 101 到 200 之间的列表:\n");
for (int i = 101; i <= 200; i++) {
if (isPrime(i)) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
代码分析:
isPrime函数:判断一个数是否为素数。它首先排除一些明显的非素数,然后使用 6k ± 1 形式来检查剩余的可能因子,从而提高效率。main函数:遍历 101 到 200 之间的所有整数,并使用isPrime函数检查每个数是否为素数。如果是,就打印出来。
C 语言经典100例
dafeng
117***1747@qq.com
参考方法:
#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); } }dafeng
117***1747@qq.com
zayn
267***5830@qq.com
参考方法:
#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; }zayn
267***5830@qq.com
内拉小付
fux***afx@163.com
参考方法:
#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; }内拉小付
fux***afx@163.com
HIT_CCC
117***2963@qq.com
参考方法:
#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; }HIT_CCC
117***2963@qq.com
ronnyz
221***8677@qq.com
参考方法:
#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; }ronnyz
221***8677@qq.com
Call_Me_BayMax
pas***erby@qq.com
参考方法:
#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; }Call_Me_BayMax
pas***erby@qq.com