已知,第一個質數(shù)是2,第二個質數(shù)是3,第三個質數(shù)是5,第四個質數(shù)是7,第五個質數(shù)是11,第六個質數(shù)是13,第七個質數(shù)是17,輸入兩個不相等的正整數(shù)a和b,求出第a個質數(shù)到第b個質數(shù)當中所有質數(shù)和。a和b之間以空格間隔,其中a和b都小于200。
目前創(chuàng)新互聯(lián)已為千余家的企業(yè)提供了網(wǎng)站建設、域名、網(wǎng)站空間、網(wǎng)站托管、企業(yè)網(wǎng)站設計、納雍網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
輸入1:1 4 輸出1:17
輸入2:7 2 輸出2:56
需要注意的要點有:
1.輸入的a和b是“第幾個質數(shù)”,這啟發(fā)我們需要使用數(shù)組;
2.求質數(shù)和,或許需要循環(huán)相加;
3.觀察輸入輸出2可以發(fā)現(xiàn),a、b大小是不確定的!這就需要我們進行if判斷兩者之間的大小了。
經(jīng)過分析,我們的c語言程序需要這幾個部分:
1.判斷一個數(shù)字是否為質數(shù)
為了方便和直觀起見,我另定義了一個函數(shù)isPrime來判斷質數(shù),方法是:對所有從2開始到這個數(shù)字之間的、能夠被這個數(shù)字整除的數(shù)用count計數(shù)。當count==0時,說明這個數(shù)除了1和它本身外沒有其他因數(shù)了,即質數(shù),return它自己;若count!=0,說明它不是質數(shù),return 0。
int isPrime(int x)
{
int i,count=0;
for(i=2 ; i
if(x%i==0)
{
count++;
}
}
if(count==0)
{
return x;
}
else
{
return 0;
}
}
2.如果是質數(shù),將這個質數(shù)的值賦給數(shù)組中的一個變量;如果不是,將這個數(shù)字加一以后再循環(huán)(發(fā)現(xiàn)這里是第一個循環(huán))
int main()
{
int a[1000]={0},j,m;
int origin=2;
for(j=0 ; j<=1000 ; j++)
{
for(m=0 ; a[j]==0 ; m++)
{
if(isPrime(origin)==0)
{
origin++;
}
else
{
a[j] = origin;
origin++;
}
}
}
3.輸入x,y,判斷x,y大小之后分別賦給大數(shù)max和小數(shù)min,利用循環(huán)和數(shù)組進行求和
int x,y;
scanf("%d %d",&x,&y);
int sum=0;
int max,min;
if(x>y)
{
max = x;
min = y;
}
else
{
max = y;
min = x;
}
for(j=min-1 ; j
sum += a[j];
}
printf("%d",sum);
return 0;
}
#include
int isPrime(int x)
{
int i,count=0;
for(i=2 ; i
if(x%i==0)
{
count++;
}
if(count==0)
{
return x;
}
else
{
return 0;
}
}
int main()
{
int a[1000]={0},j,m;
int origin=2;
for(j=0 ; j<=1000 ; j++)
{
for(m=0 ; a[j]==0 ; m++)
{
if(isPrime(origin)==0)
{
origin++;
}
else
{
a[j] = origin;
origin++;
}
}
}
int x,y;
scanf("%d %d",&x,&y);
int sum=0;
int max,min;
if(x>y)
{
max = x;
min = y;
}
else
{
max = y;
min = x;
}
for(j=min-1 ; j
sum += a[j];
}
printf("%d",sum);
return 0;
}