您的位置:

c语言用for语句编译1到100的素数,c语言for语句求素数

本文目录一览:

求1-100内的素数c语言编程?

楼主 {} 使用有问题

要 把逻辑 理清楚

先画框图,再写代码

结果:

2

3

5

7

11

13

17

19

23

29

31

37

41

43

47

53

59

61

67

71

73

79

83

89

97

用c语言编写程序输出1-100内的素数

用常规的判素性方法可如下实现

#include "stdio.h"

#include "math.h"

bool IsPrime(int x)

{

int i, s;

s = sqrt(x + 1);

for(i = 2; i = s; i++)

if(x % i == 0) return false;

return true;

}

void main( )

{

int i;

for(i = 2; i 100; i++)

if(IsPrime(i))

printf("%d ", i);

}

也可采用筛选法,筛选法效率会高一些,楼上的虽然也是筛选法,但他的效率却并不高。筛选法的思路是将那些非素数筛掉,留下那些素数。命题“对于1x100的合数x, 必含有小于10的质因子”可以证明是真命题,它的逆反命题“对于1x100的数,如果不含有小于10的质因子,则它必为素数。”则也是真命题。因此筛除时,只要筛除含有10以内的质因子的数就可以了。下面给出筛选法的代码。

#include "stdio.h"

void main( )

{

bool isprime[100];

int i, j;

isprime[0] = false;

isprime[1] = false;

for(i = 2; i 100; i++) /*先初始化2~100的都是素数,然后将非素数筛除掉*/

isprime[i] = true;

for(i = 2; i 10; i++) /*将所有含有小于10的质因子的数筛除掉*/

{

if(isprime[i]) /*如果i是素数,则将它的倍数全部筛掉*/

for(j = i * i; j 100; j += i) /*从i*i开始检测是因为小于i*i的合数都被小于i的素数筛除了*/

isprime[j] = false;

}

for(i = 2; i 100; i++)

if(isprime[i])

printf("%d ", i);

}

用C语言求解1-100之间的所有素数。

Action()

{

int i,j;

int sum=0;

int flag;//是否为素数

for(i=2;ilt;=100;i++){

flag=1;

for(j=2;jlt;=i-1;j++){

if(i%j==0){

flag=0;

break;

}

}

if(flag==1){

sum+=i;

}

}

lr_output_message("sum=%d",sum);

return 0;

}

输出的结果:sum=1060

扩展资料:

方法二、使用函数:

Action()

{

int i;

int sum=0;

for(i=2;ilt;=100;i++){

if(isPrime(i)){

sum+=i;

}

}

lr_output_message("素数之和sum=%d",sum);//loadrunner的输出,其他编译器可能是printf

return 0;

}

int isPrime(a){

int j;

int flag=1;

for(j=2;jlt;=a-1;j++){

if(a%j==0){

flag=0;

break;

}

}

return flag;

}