本文目錄一覽:
求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);
}
也可採用篩選法,篩選法效率會高一些,樓上的雖然也是篩選法,但他的效率卻並不高。篩選法的思路是將那些非素數篩掉,留下那些素數。命題“對於1×100的合數x, 必含有小於10的質因子”可以證明是真命題,它的逆反命題“對於1×100的數,如果不含有小於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;
}
原創文章,作者:AGQV,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/141170.html