本文目录一览:
求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;
}