c语言编程 计算并输出500以内最大的10个素数之和
答案:6 悬赏:0 手机版
解决时间 2021-03-24 08:35
- 提问者网友:凉末
- 2021-03-23 13:36
c语言编程 计算并输出500以内最大的10个素数之和
最佳答案
- 五星知识达人网友:千杯敬自由
- 2021-03-23 14:37
一、算法分析:
1、 根据要求,找到小于500的最大10个素数,并求和即可。
2、判断素数方法有很多,对于范围较小,而需要判断次数较多的情况,适用于素数筛。
3、用筛法求素数的基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。
二、参考代码:
#include
int map[500];//原始筛,初始为0.
void set(void)
{
int i,j;
for(i = 2; i < 500; i ++)
{
if(map[i] == 1) continue;//合数不做处理。
for(j=i<<1; j<500; j += i)
map[j] = 1;//所有i的倍数,为合数,置一。
}
}
int main()
{
int s=0,i,c=0;
set();//筛选。
for(i = 499; c<10; i--)
{
if(map[i] == 0)
{
s+=i;//判断素数并累加
c++;//计数。
}
}
printf("%d
", s);//输出结果
return 0;
}
1、 根据要求,找到小于500的最大10个素数,并求和即可。
2、判断素数方法有很多,对于范围较小,而需要判断次数较多的情况,适用于素数筛。
3、用筛法求素数的基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。
二、参考代码:
#include
int map[500];//原始筛,初始为0.
void set(void)
{
int i,j;
for(i = 2; i < 500; i ++)
{
if(map[i] == 1) continue;//合数不做处理。
for(j=i<<1; j<500; j += i)
map[j] = 1;//所有i的倍数,为合数,置一。
}
}
int main()
{
int s=0,i,c=0;
set();//筛选。
for(i = 499; c<10; i--)
{
if(map[i] == 0)
{
s+=i;//判断素数并累加
c++;//计数。
}
}
printf("%d
", s);//输出结果
return 0;
}
全部回答
- 1楼网友:神也偏爱
- 2021-03-23 18:34
#include
void main(){
int n,i,a,sum,y=0;
int arr[500];
for(n=2;n<=500;n++){
for(i=2;i
if(n%i==0){
break;
}
}
if(n==i){
arr[y++]=n;
}
}
for(a=0,sum=0;a<=9;a++){
sum=sum+arr[y-1-a];
}
printf("500以内最大的10个素数之和为:%d ",sum);
}
- 2楼网友:拾荒鲤
- 2021-03-23 17:07
1楼的求素数连平方数都不会用,何精彩之有?
- 3楼网友:封刀令
- 2021-03-23 16:55
1楼的回答简直是太精彩了,因为他直到当求最大的十个时用倒叙发
- 4楼网友:爱难随人意
- 2021-03-23 16:08
int sum=0;//存放素数的和
int count = 0;//记录素数个数
for (int i = 500; i > 0; i--)
{
for (int j = 2; j <= i; j++)
{
if (i == j)
{
sum += i;
count++;
}
if (i % j == 0)
{
break;
}
}
if (count == 10)
{
break;
}
}
//输出sum
int count = 0;//记录素数个数
for (int i = 500; i > 0; i--)
{
for (int j = 2; j <= i; j++)
{
if (i == j)
{
sum += i;
count++;
}
if (i % j == 0)
{
break;
}
}
if (count == 10)
{
break;
}
}
//输出sum
- 5楼网友:患得患失的劫
- 2021-03-23 14:54
#include
#include
int prime(int n)
{
int i;
for(i=2;i<=sqrt(n);i++)
if(n%i==0)
break;
if(i>sqrt(n))
return 1;
else
return 0;
}
main()
{
int n,count=0,sum=0;
for(n=500;count!=10;n--)
if(prime(n))
{
sum+=n;
count++;
}
printf("The sum is %d.\n",sum);
}
#include
int prime(int n)
{
int i;
for(i=2;i<=sqrt(n);i++)
if(n%i==0)
break;
if(i>sqrt(n))
return 1;
else
return 0;
}
main()
{
int n,count=0,sum=0;
for(n=500;count!=10;n--)
if(prime(n))
{
sum+=n;
count++;
}
printf("The sum is %d.\n",sum);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯