C语言求范围之内素数的和与个数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言求范围之内素数的和与个数?相关的知识,希望对你有一定的参考价值。
写出在N到M两个数范围之内的素数个数,和素数之和的代码
按照你的要求编写的C语言程序如下
#include<stdio.h>
int f(int x) //定义判断素数的函数
int n,flag=1;
if(x==1) return 0;
for(n=2;n<x;n++)
if(x%n==0)
flag=0;
return flag;
int main()
int i,N,M,count=0,sum=0;
scanf("%d%d",&N,&M);
for(i=N;i<=M;i++)
if(f(i)==1)
count++;
sum=sum+i;
printf("%d到%d之间共有%d个素数,它们的和为%d",N,M,count,sum);
return 0;
可以写一下你定义的变量代表什么吗
追答对变量的意思加解释的程序如下(每个变量的解释见注释)
#include
int f(int x) //定义判断素数的函数
int n,flag=1;//flag表示返回值,x表示传入的要判断的数,n表示循环变量
if(x==1) return 0;
for(n=2;n<x;n++)
if(x%n==0)
flag=0;
return flag;
int main()
int i,N,M,count=0,sum=0;//N,M表示范围其中N<M,i表示循环变量,count表示素数个数,sum表示素数和
scanf("%d%d",&N,&M);
for(i=N;i<=M;i++)
if(f(i)==1)
count++;
sum=sum+i;
printf("%d到%d之间共有%d个素数,它们的和为%d",N,M,count,sum);
return 0;
#include <iostream>
class sushu
public:
void all_prime(int low, int high);
;
void sushu::all_prime(int low, int high)
if (low > high) return;
int sum, times;
sum = times = 0;
bool *prime = new bool[high + 1];
for (int i = 2; i <= high; i++)
prime[i] = true;
for (int i = 2; i <= high; i++)
if (prime[i])
if (i >= low)
sum += i;
times += 1;
std::cout << i << std::endl;
for (int j = i * 2; j <= high; j += i) prime[j] = false;
std::cout << "范围内素数个数为: " << times << std::endl;
std::cout << "范围内素数和为: " << sum << std::endl;
return;
int main()
sushu *s = new sushu();
s->all_prime(100, 1000);
delete s;
return 0;
追问
你写的代码不是我学习过的,很复杂啊,
追答哈哈,只是可能看起来比较复杂,很好理解的,就是从2开始,将这个数到范围上限的倍数全部排除掉,再找下一个没被排除的数,重复这个过程,直到范围上限。这个算法也就是,筛法求素数,以空间换时间,是最高效的求素数算法
本回答被提问者采纳求100之内的素数
题目:求100之内的素数
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
1 package com.li.FiftyAlgorthm; 2 3 /** 4 * 题目:判断101-200之间有多少个素数,并输出所有素数。 5 * 程序分析:判断素数的方法:用一个数分别去除2得到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 6 * @author yejin 7 */ 8 public class PrimeNumber { 9 public static int count = 0; 10 11 public static void main(String[] args) { 12 for (int i = 101; i < 200; i++) { 13 boolean b = true; // 默认次数是素数 14 for (int j = 2; j < Math.sqrt(i); j++) { 15 if (i % j == 0) { 16 b = false; // 此数不是素数 17 break; 18 } 19 } 20 if (b) { 21 count++; 22 System.out.println(i + ""); 23 } 24 } 25 System.out.println("素数的个数:" + count); 26 } 27 }
以上是关于C语言求范围之内素数的和与个数?的主要内容,如果未能解决你的问题,请参考以下文章