读书人

初学者C语音题目

发布时间: 2013-03-26 09:54:34 作者: rapoo

菜鸟求一个C语音题目
输出1到1000的素数并且求出它们的和~~~~
[解决办法]
#include<stdio.h>
int main()
{
int i,j,count=0,sum=0;
for(i=1;i<=1000;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0) break;
}
if(j>=i)
{
count++;
sum+=i;
printf("%d ",i);
}

}
printf("sum=%d",sum);
return 0;
}
[解决办法]
这题没什么难度,在下用顺序表来优化下,典型的空间换时间,呵呵:


#include<stdio.h>
#include<math.h>

int main()
{
int count=1,list[500],flag,sum=0;
register int i,j;

list[0]=2;

for(i=3;i<1000;i+=2)
{
flag=1;

for(j=0;j<count&&list[j]<sqrt(i)+1;j++)
if(!(i%list[j]))
{
flag=0;
break;
}

if(flag)
list[count++]=i;
}

printf("小于1000的素数:\n");

// 升序输出
/*for(i=0;i<count;i++)
{
printf("%d\t",list[i]);
sum+=list[i];
}*/

// 降序输出
while(count>0)
{
printf("%d\t",list[--count]);
sum+=list[count];
}

printf("\nsum=%d\n",sum);

return(0);
}

读书人网 >C语言

热点推荐