求1到100之间的所有素数。

合集下载

一、题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔

一、题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔
程序源代码:
#include "stdio.h"
main()
{char c;
int letters=0,space=0,digit=0,others=0;
printf("please input some characters\n");
while((c=getchar())!='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
shi=x%100/10;
ge=x%10;
if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
}while(fabs(pre-this)>Epsilon);/*用解的精度,控制循环次数*/?
}?
printf("the root is %f",this);?
}
用牛顿迭代法求方程2*x*x*x-4*x*x+3*x-6的根
/*牛顿迭代法*/
#define Epsilon 1.0E-6 /*控制解的精度*/
成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正
整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
程序源代码:
/* zheng int is divided yinshu*/
为多少?

计算机二级c语言上机(南开大学)100题 (1)

计算机二级c语言上机(南开大学)100题 (1)

计算机二级C语言上机(南开大学)100题程序填空题1 补充fun函数,fun函数的功能是求10的阶乘。

n>1 n-1 n==12 在函数fun的横线上填写若干表达式,使从键盘上输入一个整数n,输出数列是一种整数数列,其中每数等于前面两数之和n==o n==1 fun(n-1)+fun(n-2)3 补充函数fun(char*s),该函数的功能是把字符串中的内容逆置s+i<s+n-1-i*(s+i)=(s+n-1-i) *(s+n-1-i)=t4 补充函数fun,他的功能是计算并输出n(包括n)以内能被3或7整除的所有自然数的倒数之和i<=ni%3==0||i%7==0 1.0/i5 功能是求1/2的圆面积,函数通过形参得到圆的半径,函数返回1/2的圆面积r r*r &x6 功能是计算并输出下列级数的前N项合Sn,直到Sn大于q为止,q 的值通过形参传入<= n++return s7 函数fun的功能是统计长整数n的各个位上出现数字1.2.3的次数,并通过外部(全局)变量c1.c2.c3返回主函数n%10 break break8 补充main函数,功能是从键盘输入一组整数,使用条件表达式找出最大的整数,当输入的整数为0时结束&num[i]max<num[i]? num[i]!=09 给定程序的功能是分别统计字符串中大写字母和小写字母的个数(*a)++ (*b)++ upper,lower10 补充main函数,功能是从键盘输入3个整数,然后找出最大的数并输出。

max=a max=b max=c11 函数fun的功能是把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动1 s[k] c12 补充fun函数,功能是字符串tt中的大写字母都改为对应的小写字母,其他的字符不变。

tt[i]<='Z'tt[i]+=32 tt13 补充fun函数,功能是判断一个数是否为素数。

C++程序设计题库 (1)

C++程序设计题库 (1)
void process():求出满足条件的所有x,并将结果存入数组a,同时统计x的个数。
void show():输出数组a及count。
(3)在主函数中完成对该类的测试。
定义一个DIF类的对象v,使用1111和9999初始化其下限和上限,按上述要求处理并输出结果。
*******************************************/
if(a[i]>='x'&&a[i]<='z') a[i]=a[i]-32-23;
}
/********** End ***********/
}
void show()
{ cout<<a<<endl; }
};
void main()
{
strings s("prZzbpP");
s.process();
s.show();
具体要求如下:
(1)私有数据成员。
int low,high:x的取值范围的下限和上限。
int a[100]:存放满足要求的x.
int count:满足条件的x的个数。
(2)公有成员函数
DIF(int lw,int hi):构造函数,用参数lw和hi分别初始化low和high。缺省的取值范围是[10,1000]。
3[题目]求取值范围内所有满足条件的4位数x,使得x的每位数字的四次方数之和与本身相等。
例如:1634=1*1*1*1 + 6*6*6*6 + 3*3*3*3 + 4*4*4*4
[编程要求]
试建立一个类DIF,完成求出某个范围内的所有满足条件的x,以及x的个数。

c语言 编程及答案

c语言 编程及答案

1、输入一个字符,判断它是否是大写字母,如果是,将它转换成小写字母;如果不是,不转换。

然后输出最后得到的字符。

#include<stdio.h>int main(){char c1;printf("input a latter:\n");scanf("%c",&c1);if(c1>='A'&&c1<='Z')c1=c1+32;printf("%c",c1);return 0;}2、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

#include<stdio.h>int main(){char c;int letters=0,space=0,digit=0,other=0;printf("Please input letters:\n");while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letters++;else if(c>='0'&&c<='9')digit++;else if(c==' ')space++;elseother++;}printf("字母数:%d\n数字数:%d\n空格数:%d\n其他字母数:%d\n",letters,digit,space,other);return 0;}3、编写一个函数,求数列1+1/2+1/3+1/4+1/5+...1/n,利用主函数调用这个函数并输出结果。

#include<stdio.h>int main(){int n;float c;float sum(int n);scanf("%d",&n);c=sum(n);printf("%f\n",c);float sum(int n){int i;float sum=0.0;for(i=1;i<=n;i++)sum=sum+1.0/i;return sum;}4、输入一个字符,判断它是否是小写字母,如果是,将它转换成大写字母;如果不是,不转换。

c语言编程100题

c语言编程100题

*******
*****
***
*
78、打印如下矩阵
25
24
23
22
21
10
9
8
7
20
64、编写函数,通过指针求一个字符串的反串。函数头如下:
65、编写函数,通过指针求一个字符串的长度。函数头如下:
#include <stdio.h>
char *strlen(char *s)
{char *p=s;
while(*p)p++;
return(p-s);
71、试编程判断输入的正整数是否既是5又是7的整数倍。若是,则输出yes,否则输出no。
72、每个苹果0.8元,第一天买两个苹果,从第二天开始,每天买前一天的2倍,直到购买的苹果个数达到不超过100的最在数。编写程序求每天平均花多少钱?
73、试编程找出1至99的所有同构数,所谓同构数是指它出现在它的平方数的右边。如6的平方数36故6是同构数。
74、试编写一程序将字符串s中的所有字符c删除。
75、编写程序,求1-3+5+……+101
76、编写程序,求E=1+1/1!+1/2!+……+1/n!,要求最后一项的值小于10-4
77、编写程序,打印以下图形(输入一正整数说,输出一棱形)
当n=4时,图形如下:
*
***
*****
24. 把文本文件d1.dat复制到文本文件d2.dat中,要求仅复制d1.dat中的英文字符。
25. 编程,把文本文件d1.dat复制到d2.dat(其中空格字符不复制)。

使用while循环和for循环输出2~100之间的素数(只能被1和自己整除的自然数)

使用while循环和for循环输出2~100之间的素数(只能被1和自己整除的自然数)

使⽤while循环和for循环输出2~100之间的素数(只能被1和⾃⼰整除的⾃然数)不管是while循环还是for循环,原理都是取根号,循环到取根号后的数,⾄于为什么需要循环到开根后的数,我想主要是因为⼀个数的分解因⼦在开根号后的数向上取整以下吧。

话不多说,上代码:while循环:while循环原理如下:i = 2while i <= 100:# 内层循环 j 从2循环到根号 ij = 2while j <= (i / j): # j <= (i/j) 等效于 j*j <= i 也就等于 j <= 根号 iif i % j == 0:break # 判断如果i可以被j整除,则提前跳出j的循环j = j + 1# 如果j > i/j判断为真表⽰正常循环结束,i没有被j整除,i是素数。

否则就是提前跳出j循环的,i有被j整除,i不是素数。

if j > i / j:print(i, end=" ")i = i + 1输出结果:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97也可以⽤for循环:这⾥的round()函数是向上取整。

import mathfor i in range(2, 101):flag = 0for j in range(2, round(math.sqrt(i) + 1)):if i % j == 0:flag = 1breakif flag:continueprint(i)结果是⼀样的!。

求1到100之间的所有素数Word版

求1到100之间的所有素数Word版

求1到100之间的所有素数Word版
一到一百的素数有2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97;共25个。

素数又称质数,有无限个。

一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。

一、质数性质
1、质数p的约数只有两个:1和p。

2、初等数学基本定理:任一大于1的自然数,要么本身是质数,要么可以分解为几个质数之积,且这种分解是唯一的。

3、质数的个数是无限的。

4、质数的个数公式π(n)是不减函数。

5、若n为正整数,在n²到(n+1)²之间至少有一个质数。

二、合数性质
1、所有大于2的偶数都是合数。

2、所有大于5的奇数中,个位为5的都是合数。

3、除0以外,所有个位为0的自然数都是合数。

4、所有个位为4,6,8的自然数都是合数。

5、最小的(偶)合数为4,最小的奇合数为9。

6、每一个合数都可以以唯一形式被写成质数的乘积,即分解质因数。

算法:枚举法

算法:枚举法
}
} if(mark){ //是素数进行输出
cout<<" "<<i;
}
}
枚举法
例题:找出1到100之间的素数。
程序优化后如右图。
优化后的程序没有引入数学函数 和float 变量。
对于for循环初始条件j=2,只执行1 次,而对于约束条件j*j<=i,要执 行多次。因此此处还可以优化。
定义变量int t=sqrt(i);约束条件改 为j<=t;
#include<iostream> #include<cmath> using namespace std;
int main() {
return 0; }
int i,j; cout<<2; //输出第一个素数 for(i=3;i<=100;i+=2){ //只检查>=3的奇数
bool mark=true; //默认是素数
double ret=x; ret=a*ret+b; ret=ret*x+c; ret=ret*x+d; return ret; }
枚举法
例题 一元三次方程求解(noip2001tg)
编程,主函数
int main(){ int a,b,c,d; cin>>a>>b>>c>>d; float i; double y1,y2; int count=0;//记录解的个数; for(i=-100;i<100;i+=1){ y1=fx(a,b,c,d,i); y2=fx(a,b,c,d,i+1); double t=y1*y2; if(t==0){//i和i+1至少1个是解 if(y1==0){ if(count){cout<<" "; } cout<<i; count++; if(y2==0){ cout<<" "<<i+1;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二几种算法比较
一、题目
1.求1到100之间的所有素数。
要求用两种方法实现:(1)列举法
(2)用筛法
2.求n!
要求用两种方法实现:(1)递归法
(2)非递归法
二、程序清单
1.(1)列举法
#include <stdio.h>
int fac(int n)
{ int f;
if(n<0)
printf("n<0,data error!");
printf("%d!=%d\n",n,y);
return 0;
}
int fac(int a);
{
int f;
if(n<0)
printf("n<0,data error!");
else if(n==0||n==1)
f=1;
else f=fac(n-1)*n;
return(f);
}
四、运行结果:
第一题的运行结果如下:
第二题的运行结果如下:
五、心得体会
{
if(a[i]!=0 && a[j]!=0)
if(a[j]%a[i]==0)
a[j]=0;
}
printf("\n");
for(i=1,n=0;i<=100;i++)
{
if(a[i]!=0)
{
printf("%5d",a[i]);
n++;
}
if(n==5)
{
printf("\n");
n=0;
}
}
}
三、程序调试过程中所出现的错误
}
1.(2)用筛法
#include "stdio.h"
#include "math.h"
void main()
{
int i,j,n,a[101];
for (i=1;i<=100;i++)
a[i]=i;
a[1]=0;
for(i=2;i<=sqrt(100);i++)
for(j=i+1;j<=100;j++)
else if(n==0||n==1)
f=1;
else
f=fac(n-1)*n;
return(f);
}
void main()
{ int n, y;
printf("Input a integer number:");
scanf("%d",&n);
y=fac(n);
printf("%d! =%15d",n,y);
rn 1;
else
return n*f(n-1);
}
2.(2)非递归法
#include<stdio.h>
int main()
{ int fac(int n);
int n;
int y;
printf("input an integer number:");
scanf("%d",&n);
y=fac(n);
2.(1)递归法
#include<stdio.h>
double f(int n);
int main(void)
{
int n;
printf("Enter n:");
scanf("%d",&n);
printf("%lf\n",f(n));
return 0;
}
double f(int n)
{
if(n==0||n==1)
相关文档
最新文档