从键盘上任意输入一个整数n,编程计算并输出1~n之间的所有素数及所有素数之和
#include
#include
int prime(int x){
int i;
for(i=2;i<=(int)sqrt(x);i++)
if(x%i==0)
return 0;
return 1;
}
void main(){
int n,i,j,sum=2;
printf("n=
");
scanf("%d",&n);
printf("小于等于%d的素数
",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("
");
}
printf("
和为%d",sum);
printf("
");
}
扩展资料:
c语言书写规则:
1.一个说明或一个语句占一行。
2.用{} 括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行。
3.低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来更加清晰,增加程序的可读性。在编程时应力求遵循这些规则,以养成良好的编程风格。
参考资料:
百度百科-c语言
//没有那么复杂,下面是在你的程序基础上修改的。
#include
#include
int prime(int n); //判断素数,是返回1,否则返回0.
int main()
{
int sum = 0;
int ret;
int i = 0;
int n;
printf("Please input a number");
scanf("%d",&n);
for (i = 1;i <= n;i++)
{
ret = prime(i);
if (ret == 1)
{
sum +=i; //求和。
}
}
printf("The final sum is %d",sum);
printf("program is over");
return 0;
}
int prime(int n)
{
int j;
int a;
if (n <2)
{
return 0;
}
if (n == 2)
{
return 1;
}
else
{
for (j = 2;j < n ;j++)
{
a = n % j;
if(a==0)
{
return 0;
}
}
}
return 1;
}
#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
",l,sum);
return 0;
}
运行效果:
扩展资料:
以15为例:
因为:1-15之间的素数有13、11、7、5、3、2
所以:13+11+7+5+3+2=41
printf()函数用法:
printf()函数的调用格式为:printf("<格式化字符串>",<参量表>)。
其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。
参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。
# 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
",sum);
return 0;
}
这个问题最好自定义一个函数,然后在主函数上循环执行这个函数并实现累加,具体代码如下:
#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
",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;
}
你的程序中 判断素数并加和的部分有问题 在你的基础上修改如下 PS:main不需要改动 # include int SumPrime(int n){ int i; int k; int sum=0; for(i=2;i
。。。。我也问了类似的题。不过我是写完了。优化时出问题
用C语言编写程序从键盘输入一个正整数数n,输出n!
要编写一个C语言程序,从键盘输入一个正整数n并计算其阶乘(n!),可以通过两种方法实现:递归和循环。首先,我们来看递归的方法:c include \/\/ 递归函数计算阶乘 int factorial(int n) { if (n <= 1)return 1;else return n * factorial(n - 1);} int main() { int n, result;printf(...
编写C语言程序, 从键盘输入一个正整数N(N<=10),并输出
源程序如下:include <stdio.h> int main(){ int n,i,j,sum=1,t;scanf("%d", &n);for(i=1;i<=n;i++){ t=1;for(j=1;j<=i;j++){ t *= 2; \/\/每次计算2 ^ i 出来 } sum += t; \/\/sum加上算出来的2 ^ i } printf("%d\\n", sum);return 0;} ...
、编写程序,主函数从键盘输入一个整型数n,调用函数ishuiw判断这个数是...
include <stdio.h> include <stdbool.h> bool ishuiwen(int n) { int m = n, reverse = 0;while (m != 0) { int rem = m % 10;reverse = reverse * 10 + rem;m \/= 10;} return n == reverse;} int main() { int n;printf("请输入一个整数: ");scanf("%d", &n);i...
大一C语言题:从键盘上输入整数n,编程统计1~n之间的能被2或3整除的数的...
; for(i=1; i<=n; i++) if(i%2==0 || i%3==0) c++; printf("%d\\n", c); return 0;}取巧的做法是 include <stdio.h>int main(){ int n; scanf("%d",&n); printf("%d\\n", n\/2+n\/3-n\/6); return 0;} ...
python从键盘输入一个整数值n,编程求它的所有因子之和,规定n不大于100...
n=int(input("please input a integer n:"))result =0for i in range(1,n): if n%i==0:result+=iprint("the factor of n sum is :%d"%result)
编写程序,从键盘输入一个正整数n,n<=15,求n!并输出
include<stdio.h> int main(){ int n;scanf("%d",&n);int sum=n;while(--n)sum*=n;return !printf("%d\\n",sum);}
c语言,从键盘中输入一个正整数n分别求1到n之间所有个位数是3或5的数的...
在这个程序中,我们使用 for 循环遍历从 1 到 n 的所有整数,判断它们的个位数是否为 3 或 5,如果是,则将它们的和累加到变量 sum 中。最终输出变量 sum 的值,即为题目所求。需要注意的是,题目要求输入一个正整数 n,因此我们需要对输入的值进行合法性检查,以确保它是正整数。此外,如果 n...
从键盘输入任意一个正整数,设计循环程序计算该整数有多少位?
不断地除以10,直到商为0,就得到位数了。c 程序如下:include <stdio.h> int main(){ int x,n=0;printf("input a int value\\n");scanf("%d",&x);while (x != 0){ x=x\/10;n++;} printf("%d\\n",n);return 0;} 对于很大的正整数,例如有几十位,可以按字符串输入,用strlen...
c++从键盘输入整数n,计算1+2+3+...+n
include <iostream>using namespace std;int main(){ int i,n,s=0;cout << "input n" << endl;cin >> n;s=0;for (i=1;i<=n;i++) s=s+i;\/\/ 也可以直接算得: s= 0; s = (1+n)*n\/2;cout << "sum=" << s << endl;return 0;} ...
使用键盘输入一个多位整数n,利用循环实现将这个整数逆序输出?
scanf("%d", &n);while (n > 0) { reversed = reversed * 10 + n % 10;n \/= 10;} printf("逆序输出为:%d\\n", reversed);return 0;} 这里使用scanf函数从键盘输入一个多位整数n,然后使用循环将这个整数逆序输出。循环中,每次取出n的个位数,加入到reversed的末尾,然后将n除以10去掉...