从键盘上任意输入一个整数n,编程计算并输出1~n之间的所有素数及所有素数之和

从键盘上任意输入一个整数n,编程计算并输出1~n之间的所有素数及所有素数之和

#include<stdio.h>

int main()

{

int n,i,j,t,l;

int sum=0;

printf("请输入一个大于2的整数:");

scanf("%d",&n);

l=n;

for(;n>=2;n--)

{

for(i=2;i<n;i++)

{

if(n%i!=0)//判断其为素数

t=1;1

else

{

t=2; 

break;

}

}

if(t==1)

{

sum+=n;

//printf("%d ",n);//输出1-n之间的所有素数

}

}

printf("1-%d之间的所有素数和为:%d\n",l,sum); 

return 0;

}

运行效果:

扩展资料:

以15为例:

因为:1-15之间的素数有13、11、7、5、3、2

所以:13+11+7+5+3+2=41

printf()函数用法:

printf()函数的调用格式为:printf("&lt;格式化字符串&gt;",&lt;参量表&gt;)。

其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。

参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-08-21
# include <stdio.h>
int SumPrime(int n)
{
    int i;
    int k;
    int sum=0;
    for(i=2;i<=n;++i )
    {
        for(k=2;k<i;++k)
        {
            if(i%k==0)
                break;
        }
     if(k == i) sum+= k;
    }
    return sum;
}
int main (void)
{
    int n;
    int sum;
    printf("please enter a number:");
    scanf("%d",&n);
    sum=SumPrime(n);
    printf("sum = %d\n",sum);
 
    return 0;
}

第2个回答  2019-10-04

这个问题最好自定义一个函数,然后在主函数上循环执行这个函数并实现累加,具体代码如下:

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

int IsPrime(int x);

 main()

int n,j;
int s=0;//用于求和

printf("Input n:");
scanf("%d",&n);

//实现1到n判断是否为素数,并且实现累加
for(j=2;j<=n;j++)
{
if(IsPrime(j))
s+=j;
}
printf("sum=%d\n",s);

system("pause");
 }

 //函数功能:判断一个数是否为素数
 int IsPrime(int x)
 {
int flag=1;
int i;

//提高函数的健壮性
if(x<2)
flag=0;

for(i=2;i<x;i++)
{
if(x%i==0)
{
flag=0;
break;
}
}
return flag;
 }

第3个回答  2017-04-12
你的程序中 判断素数并加和的部分有问题 在你的基础上修改如下 PS:main不需要改动 # include int SumPrime(int n){ int i; int k; int sum=0; for(i=2;i本回答被网友采纳
第4个回答  2017-04-12
。。。。我也问了类似的题。不过我是写完了。优化时出问题

从键盘上任意输入一个整数n,编程计算并输出1~n之间的所有素数及所有素数...
int n,i,j,t,l;int sum=0;printf("请输入一个大于2的整数:");scanf("%d",&n);l=n;for(;n>=2;n--){ for(i=2;i<n;i++){ if(n%i!=0)\/\/判断其为素数 t=1;1 else { t=2;break;} } if(t==1){ sum+=n;\/\/printf("%d ",n);\/\/输出1-n之间的所有素数 } } p...

c语言:从键盘任意输入一个整数n,编程计算并输出1-n之间的所有素数之和...
return 1;} void main(){ int n,i,j,sum=2;printf("n=\\n");scanf("%d",&n);printf("小于等于%d的素数\\n",n);if(n>2){ printf("%4d",2);j++;} for(i=3;i<=n;i+=2)if(prime(i)==1){ printf("%4d",i);sum=sum+i;if(j!=0 && ++j%10==0)printf("\\n");} ...

...编程计算并输出1~n之间的所有素数之和 我编的这个程序怎么错了(C语 ...
int n,i,j,t,l;int sum=0;printf("请输入一个大于2的整数:");scanf("%d",&n);l=n;for(;n>=2;n--){ for(i=2;i<n;i++){ if(n%i!=0)\/\/判断其为素数 t=1;else { t=2;break;} } if(t==1){ sum+=n;\/\/printf("%d",n);\/\/输出1-n之间的所有素数 } } printf...

C语言求助 从键盘输入任意一个整数n
要解决的问题是编写一个C语言程序,该程序可以从键盘输入任意一个整数n,并计算从1到n之间的所有素数之和。首先,需要包含头文件stdio.h和math.h。stdio.h提供输入输出功能,math.h提供数学函数。定义一个函数ss(int n),用于检查n是否为素数。如果是素数则返回1,否则返回0。素数的定义是只有1和它...

输入一个整数n,编程计算并输出1到n之间的所有素输之和
include<stdio.h>void main() { int n,i,j,b,s; scanf("%d",&n); for ( i=1,s=0;i<=n;i++ ) { for ( j=2,b=1;j<=i\/2;j++ ) if ( i%j==0 ) { b=0; break; } if ( b ) s+=i; } printf("%d\\n",s);} ...

任意输入一个整数n(n>1),编程计算并输出1~n之间的所有素数之和S.要 ...
include<math.h> int s=0;void sum1(int n){s+=n;} int isprime(int n){int i;for(i=2;i<=sqrt(n);i++)if(n%i==0)return 0;sum1(n);} int main(){int i,n;scanf("%d",&n);for(i=2;i<=n;i++)isprime(i);printf("1~%d之间所有素数的和=%d ",n,s);return 0...

编程c++输入一个整数n,输出1—n之间所有奇数的和。
intsum=0;printf("请输入一个大于2的整数:");scanf("%d",&n);l=n;for(;n>=2;n--){ for(i=2;i<n;i++){ if(n%i!=0)\/\/判断其为素数 t=1;else { t=2;break;} } if(t==1){ sum+=n;\/\/printf("%d",n);\/\/输出1-n之间的所有素数 } } printf("1-%d之间的所有素数...

使用函数调用从键盘输入一个整数n,并输出1-n所有素数!
另一个算法是从2~n中依次删除2,3,……的倍数(如果这个数已经被删除,就不用考虑了。比如4在删除2的倍数时被删除了,因此删除3的倍数后不考虑4,直接删除5的倍数),那么剩下的就是素数。删除m的倍数的时间复杂度是O(n\/m),因此这种算法的时间复杂度是O(n(1+1\/2+...+1\/n))=O(nlog n...

从键盘输入一个数num,打印出从1到num的所有素数,并计算和(用linux 系...
flag=1 # 素数表示(其中 1 表示是,0 表示否)sum=0 # 用来存储素数之和 DEFINE FUNCTIONS HERE \/ 函数名称:is_prime()函数功能:测试一个数是否为素数 \/ function is_prime() { N=$1 flag=1 for ((i=2; i<(N\/2+1); i++)) { ((N%i))if [ $? -ne 0 ]; then f...

C#从键盘上输入一个整数N,输出1~N之间的素数。(不使用方法或函数...
include <stdio.h> int main(){ int N, i, j;printf("输入一个数:");scanf("%d", &N);for (i = 2; i <= N; i++){ for (j = 2; j < i; j++)if (i % j == 0)break;if (i == j)printf("%d ", i);} return 0;} ...

相似回答