#include <stdio.h> int main() { int count = 0; //计算质数的个数 //生成100到999的数,并且偶数肯定不是质数 for (int i = 101; i<1000; i += 2) { int falg = 0; //生成1到i的除数 for (int j = 1; j<= i; j++) { if(i % j == 0) { falg++; } //被第三个数整除就不是质数了,提高效率 if(falg > 2) { break; } } if(falg == 2) count++; } printf("%d\n",count); return 0; }
//看见这道题,想起来了刚学习C语言的那段时光 //真美好啊 #include <stdio.h> #include <math.h> int main() { const int min = 100; const int max = 999; int i = 0; int j = 0; int flag = 0; int count = 0; for(i = min; i <= max; i++) { flag = 1; for(j = 2; j <= sqrt(i); j++) { if(i % j == 0) { flag = 0; break; } } if(flag) { count++; } } printf("%d\n", count); return 0; }
#include <stdio.h> int main() { int i=0; int count=0; int flag=1; for(i=100;i<=999;i++) { int j=0; for(j=2;j<i;j++) { if(i%j==0) { break; } } if(i==j) { count++; } } printf("%d\n",count); return 0; }
#include <stdio.h> #include <math.h> // 判断一个数是否为质数 int is_prime(int n) { // 1不是质数 if (n == 1) { return 0; } // 2是质数 if (n == 2) { return 1; } // 偶数不是质数 if (n % 2 == 0) { return 0; } // 从3到sqrt(n)遍历所有奇数,看是否能整除n for (int i = 3; i <= sqrt(n); i += 2) { if (n % i == 0) { return 0; } } // 没有找到能整除n的数,说明n是质数 return 1; } int main() { // 计数器,记录有多少个三位数是质数 int count = 0; // 从100到999遍历所有三位数 for (int i = 100; i <= 999; i++) { // 如果是质数,计数器加一 if (is_prime(i)) { count++; } } // 输出结果 printf("%d\n", count); return 0; }
#include <stdio.h> int main() { int count = 0; int flag = 0; int i = 0, j = 0; for(i = 100; i <= 999;i++) { //先计算是否能被2整除,可以减少计算量 //能被2整除说明不是质数,直接跳到下一个 if(i % 2 == 0) { continue; } else { for(j = 3;j< i;j+=2) { if(i % j == 0) //如果找到被整除的数,说明这个数不是质数,结束这层循环,跳到下一个数 { flag = 0; break; } else { flag = 1; continue; } } if(flag == 1) count++; } } printf("%d\n",count); return 0; }
#include <stdio.h> int main(){ int sum = 0;//质数个数 int i; int j; for(i=100;i<=999;i++){//外层从100——999的被除数 for(j=2;j<=i;j++){//内层开始从2——i的初始值结尾的除数寻找质数是否可除因子问题 if(i%j==0){//开幕雷击发现是质数存在可除因子就退出 break; } else if(i%j!=0){ //如果发现这个数的因子不是质数所除的//马上怀疑下一个数是否存在质数因子除数的关系 do{ if(i%j==0){//发现质数有因子可除马上退出来 break; } j++; }while(i>j);//无限循环累加找质数可除以因子情况 if(i==j){//加到相同数没有发现可除的因子,证明是质数 sum+=1; break; } else if(i%j==0){//累加中存在因子可除情况则退出 break; } } } } printf("%d\n",sum); return 0; }
#include <stdio.h> int main() { /* 方法1: 求素数数量,总数减非素数数量 int totalNum = (999 - 100) + 1; int count = 0; for (int i = 100; i < 1000; i++) { for (int j = 2; j * j <= i; j++) { if (i % j == 0) { count++; break; } } } printf("%d\n", totalNum - count); */ /* 方法2: 用flag标记,1为素数,0为非素数; 默认flag为1,若在内循环i被j整除,则设flag为0,表示i为非素数; 内循环判断完后判断flag值,flag为1则prime++; 注意要将flag重置为1 int prime = 0, flag = 1; for (int i = 100; i < 1000; i++) { for (int j = 2; j * j <= i; j++) { if (i % j == 0) { flag = 0; break; } } if (flag == 1) { prime++; } flag = 1; } printf("%d\n", prime); */ /* 方法3: 当j * j <= i时,i % j == 0,那么说明i能被j整除,i不是素数 当j * j > i时,说明i % j != 0,说明i不能被j整除,i是素数 注意除数j重置为2,因为j的作用域为整个外循环 */ int cnt = 0; int i, j; for (i = 100; i < 1000; i++) { for (j = 2; j * j <= i; j++) { if (i % j == 0) { break; } } if (j * j > i) { cnt++; } // Reset divisor j = 2; } printf("%d\n", cnt); return 0; }