首页 > 试题广场 >

KiKi求质数个数

[编程题]KiKi求质数个数
  • 热度指数:46001 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
KiKi知道了什么是质数(只能被1和他自身整除的数),他现在想知道所有三位整数中,有多少个质数。

输入描述:


输出描述:
一行,一个整数,表示所有三位整数中,有多少个质数。
#include<stdio.h>

int main()
{
    int count=0;//切记!!初始化
    for(int i=100;i<1000;i++){
        int yin=0;//记录三位数的因数个数
        for(int j=2;j<(i/2+1);j++){
            if(!(i%j)) yin++;
        }
        if(yin==0) count++;
    }
    printf("%d",count);
    return 0;
}
发表于 2024-09-09 21:34:52 回复(0)
#include <stdio.h>
#include <math.h>

int main() {
    int i = 0, j = 0, num = 0;
    for (i = 100; i < 1000; i++) {
        for (j = 2; j < sqrt(i); j++) {
            if (i % j == 0)break;
        }
        if (j > sqrt(i))num++;
    }

    printf("%d\n", num);

    return 0;
}

发表于 2024-08-23 11:17:52 回复(0)
#include <stdio.h>
#include <stdbool.h>

bool is_prime(int num) {
    if (num <= 1) {
        return false;
    }
    for (int i = 2; i * i <= num; i++) {
        if (num % i == 0) {
            return false;
        }
    }
    return true;
}

int main() {
    int count = 0;
    for (int i = 100; i <= 999; i++) {
        if (is_prime(i)) {
            count++;
        }
    }
    printf("%d\n", count);
    return 0;
}
发表于 2024-07-04 20:55:43 回复(0)
#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;
}

发表于 2024-06-19 01:07:43 回复(1)
#include <stdio.h>
int main() {
   int n=0;
   int i=0;
   int count=0;
   for(n=100;n<=999;n++)
   {
    for(i=2;i<n;i++)
    {
        if(n%i==0)
        {
            count++;//先算出有多少不是素数,再用900减去
            break;          
        }
    }
   }
   printf("%d", 900-count);
    return 0;
}
发表于 2024-06-01 21:55:24 回复(0)
#include <stdio.h>

int main() {
    int n,sum=0,i;
    for(n=100;n<1000;n++){
        for(i=2;i<n-1;i++){
            if(n%i==0){
                break;
            }
        }
        if((i+1)==n){
            sum++;
        }
    }
    printf("%d",sum);
    return 0;
}
编辑于 2024-03-28 15:11:34 回复(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;
}

发表于 2024-03-20 00:12:25 回复(0)
#include <stdio.h>

int main() {
    int count = 0;

    for(int a = 100; a <= 999; a++)
    {
        for(int b=2; b < a; b++)
        {
            if (a % b == 0){
                count = count + 1;
                break;
            }
        }
    }
    printf("%d", (999 - 100 + 1 - count));
    return 0;
}
发表于 2024-02-07 14:54:34 回复(0)
#include <stdio.h>
int is_prime(int n) {
    int i = 0;
    for (i = 2; i < n; i++) {
        if (n % i == 0)
            return 0;
    }
    return 1;
}
int main() {
    int count = 0;
    int i = 0;
    for (i = 100; i <= 999; i++) {
//判断i是否为质数
        if (is_prime(i)) {
            count++;
        }
    }
    printf("%d\n", count);
    return 0;
}

发表于 2024-02-04 17:33:04 回复(0)
#include <stdio.h>

int main() {
    int sum=0;
    for(int i=100; i<=999; i++){
        int tag = 0;
        for(int x=1; x<=i; x++){
            if((i % x) == 0){
                tag++;
            }
        }
        if(tag<=2){
            sum++;
            //printf("%d ", i);
        }
    }
    printf("%d", sum);
    return 0;
}
发表于 2024-01-19 20:14:27 回复(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;
}

发表于 2023-12-06 10:45:06 回复(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;
}

发表于 2023-11-22 21:26:02 回复(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;
}

发表于 2023-06-25 15:24:42 回复(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;
} 

发表于 2023-06-20 17:58:03 回复(0)
#include <stdio.h>
#include <math.h>

int main() {
    int i = 0;
    int j = 0;
    int k = 0;
    int count = 0;
    for(i = 100; i < 1000; i++)
    {
        for(j = 2; j <= (int)sqrt(i); j++)
        {
            k = i % j;
            if(k == 0)
            {
                break;
            }
            else if(j == (int)sqrt(i))
            {
                count++;
            }
        }
    }
    printf("%d", count);

    return 0;
}
发表于 2023-02-27 20:16:16 回复(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;
}
发表于 2023-02-19 14:15:48 回复(0)