输出1~100之间的所有素数
c语言输出2~100的素数
c语⾔输出2~100的素数这个代码很巧妙,个⼈的理解都写在了注释⾥#include <stdio.h>#include <stdlib.h>#include <math.h>//相关的论⽂:[1]张景龙,黄静,王爱松等.素数判定算法的改进[J].河南科技学院学报(⾃然科学版),2013,(6):61-64.DOI:10.3969/j.issn.1008-7516.2013.06.015.//输出100以内的素数,思路://判断素数⽅法1://假如⾃然数N不是素数,则除1和其本⾝之外,必然⾄少存在两个数A和B,使得A*B=N,//则A和B中必有⼀个⼤于或者等于sqrt(N),另⼀个⼩于或者等于sqrt(N)。
下⾯是粗略证明//如果N是合数,则必有⼀个⼩于或者等于根号N的素因⼦.//因为任何合数都可表⽰为两个或者更多个素数之积.//假如N是合数且其素因⼦都⼤于根号N,那么将产⽣⽭盾:根号N*根号N>N.所以合数必有(⾄少)⼀个不⼤于根号N的素因⼦.//n的不⼤于根号的因⼦<=sqrt(n);n-1的不⼤于根号的因⼦<=sqrt(n-1),显然sqrt(n-1)<sqrt(n);//所以2~n内的⾃然数的因⼦范围是2~sqrt(n);换句话说2~sqrt(n)的倍数覆盖了了2~n范围内的合数//数组记录,初始化为0,判断为合数置为1,#define n 100int main(){int isPrim[n+1]={0};int i,j;//判断条件中⼀定是是i<=sqrt(n)//判断素数⽅法2//其中2-sqrt(n)(向下取整)是不是素数该咋判断://根据:判断⾃然数N是不是合数,就是看2~(N-1)之间有⽊有数能整除N,换句话说就是2~(N-1)之间有⽊有数的倍数是N。
//因为“2-sqrt(n)”中的数若是合数,它的因数肯定是在⽐⾃⼰⼩的数中产⽣,//由2判断了3是不是合数,由2,3判断了4是不是合数,//由2,3,4判断了5是不是合数,依次类推。
java输出1~100之间的全部素数的5种方式总结
java输出1~100之间的全部素数的5种⽅式总结⽬录需求:输出1~100的所有素数分析java输出素数找出素数规范输出需求:输出1~100的所有素数分析1.素数:判断条件1:只能被1和本⾝整除的称为素数;判断条件2:在区间(1,x/2)中找不到能整除素数x的整数;判断条件3:在区间(1,sqrt(x))中找不到能整除素数x的整数;2.⽅法:很多,但不外是循环嵌套外加条件语句;class PrintSuShu {public static void main(String[] args) {//⽅法⼀:根据素数的定义来遍历检查//外层循环遍历被除数i(因为1既不是素数也不是和数,所以直接从2开始遍历)for (int i = 2; i <= 100; i++) {//定义⼀个逻辑值,初值为trueboolean flag = true;//内层遍历除数jfor (int j = 2; j < i; j++) {//判断是否存在j能整除i,若存在,则更改flag的值并跳出循环if (0 == i % j) {flag = false;break;}}//根据flag的值判断是否输出iif (flag) {System.out.print(i + " ");}}System.out.println('\n' + "---------------------------");//⽅法⼆:根据判断条件2进⾏遍历检查,减少遍历次数//外层循环遍历被除数i(因为1既不是素数也不是和数,所以直接从2开始遍历)for (int i = 2; i <= 100; i++) {//定义⼀个逻辑值flag,初始值为trueboolean flag = true;//内层循环遍历除数j(注意:此处若不取边界,则当i=4时,j=2会因为⼩于i/2=2⽽直接跳出内循环)for (int j = 2; j <= (i / 2); j++) {//判断是否存在除数j能整除i,若存在,则修改flag的值并跳出循环if (0 == i % j) {flag = false;break;}}//根据flag的值判断是否输出iif (flag) {System.out.print(i + " ");}}System.out.println('\n' + "---------------------------");//⽅法三:根据判断条件3进⾏遍历检查,减少遍历次数//外层循环遍历被除数i(因为1既不是素数也不是和数,所以直接从2开始遍历)for (int i = 2; i <= 100; i++) {//定义⼀个逻辑值flag,初始值为trueboolean flag = true;//内层循环遍历除数j(注意:此处若不取边界,则当i=4时,j=2会因为⼩于sqrt(i)=2⽽直接跳出内循环)//再思考⼀下若i=25时呢?若不取边界还有那些不是素数的数会输出呢?for (int j = 2; j <= Math.sqrt(i); j++) {//判断是否存在除数j能整除i,若存在,则修改flag的值并跳出循环if (0 == i % j) {flag = false;break;}}//根据flag的值判断是否输出iif (flag) {System.out.print(i + " ");}}System.out.println('\n' + "---------------------------");/*⽅法四:在⽅法三的前提上优化,优化基础是除2外的所有偶数均不是素数,*(i+=2)只遍历奇数,减少外层遍历次数;同理,由于奇数是不能被偶数整除的,*(j+=2)只遍历奇数,减少内层遍历次数*/System.out.print("2 ");//外层循环遍历被除数i(因为1既不是素数也不是和数,所以直接从2开始遍历)for (int i = 3; i <= 100; i += 2) {//定义⼀个逻辑值flag,初始值为trueboolean flag = true;//内层循环遍历除数j(注意:此处若不取边界,则当i=4时,j=2会因为⼩于sqrt(i)=2⽽直接跳出内循环)//再思考⼀下若i=25时呢?若不取边界还有那些不是素数的数会输出呢?for (int j = 3; j <= Math.sqrt(i); j += 2) {//判断是否存在除数j能整除i,若存在,则修改flag的值并跳出循环if (0 == i % j) {flag = false;break;}}//根据flag的值判断是否输出iif (flag) {System.out.print(i + " ");}}System.out.println('\n' + "---------------------------");//联想⼀下,能被2整除(偶数)的直接剔除,同样的道理,能被3or5整除的剔除掉会不会让外层循环的次数更少呢?//此处才到100,若是1000呢?10000呢?//定义⼀个数组,由于剔除了偶数,故数组长度不会超过总个数的⼀半int[] arr = new int[500];int count = 0;for (int i = 6; i <= 1000; i++) {boolean flag = true;if (0 == i % 2 || 0 == i % 3 || 0 == i % 5) {flag = false;}if (flag) {arr[count] = i;count++;}}System.out.println("6~1000中剔除能被2or3or5整除的数后还剩" + count + "个");System.out.println("1~1000中所有素数为:");System.out.print("2" + "\t");System.out.print("3" + "\t");System.out.print("5" + "\t");count = 0;for (int i = 0; i < 500; i++) {boolean flag = true;if (0 == arr[i]) {break;}for (int j = 7; j <= Math.sqrt(arr[i]); j += 2) {if (0 == (arr[i]) % j) {flag = false;break;}}if (flag) {System.out.print((arr[i]) + "\t");count++;}}System.out.println("\n" + "---------------------");System.out.println("\n" + "其中6~1000中剔除能被2or3or5整除的数中还是素数的有" + count + "个");}}java输出素数java输出1,000,000之内的所有素数找出素数for(n=3;n<=1000000;) {for(i=2;i<n;i++) {if(n%i= =0) break;if(i= =n-1) {su[count]=n;count++;}}n+=2;}加⼆是因为从3开始奇数有可能是素数,第⼀个循环遍历1000000个数,第⼆个循环看它是不是素数。
用筛法求出100以内的全部素数
例6、用筛法求出100以内的全部素数,并按每行五个数显示。
【问题分析】⑴把2到100的自然数放入a[2]到a[100]中(所放入的数与下标号相同);⑵在数组元素中,以下标为序,按顺序找到未曾找过的最小素数minp,和它的位置p(即下标号);⑶从p+1开始,把凡是能被minp整除的各元素值从a数组中划去(筛掉),也就是给该元素值置0;⑷让p=p+1,重复执行第②、③步骤,直到minp>Trunc(sqrt(N)) 为止;⑸打印输出a数组中留下来、未被筛掉的各元素值,并按每行五个数显示。
用筛法求素数的过程示意如下(图中用下划线作删去标志):① 2 3 4 5 6 7 8 9 10 11 12 13 14 15…98 99 100 {置数}② 2 3 4 5 6 7 8 9 10 11 12 13 14 15…98 99 100 {筛去被2整除的数}③ 2 3 4 5 6 7 8 9 10 11 12 13 14 15…98 99 100 {筛去被3整除的数}……2 3 4 5 6 7 8 9 10 11 12 13 14 15…98 99 100 {筛去被整除的数}Program Exam53;const N=100;type xx=1 .. N; {自定义子界类型xx(类型名)}Var a: array[xx] of boolean; i,j: integer;BeginFillchar(a,sizeof(a),true);a[1] := False;for i:=2 to Trunc(sqrt(N)) doif a[I] thenfor j := 2 to N div I doa[I*j]:= False;t:=0;for i:=2 to N doif a[i] thenBeginwrite(a[ i ]:5); inc(t);if t mod 5=0 then writelnend;End.【例3】输入十个正整数,把这十个数按由大到小的顺序排列(将数据按一定顺序排列称为排序,排序的算法有很多,其中选择排序中的“简单选择排序”是一种较简单的方法)分析:要把十个数按从大到小顺序排列,则排完后,第一个数最大,第二个数次大,……;因此,我们第一步可将第一个数与其后的各个数依次比较,若发现,比它大的,则与之交换,比较结束后,则第一个数已是最大的数。
例6、用筛法求出100以内的全部素数,并按每行五个数显示
例6、用筛法求出100以内的全部素数,并按每行五个数显示。
【问题分析】⑴把2到100的自然数放入a[2]到a[100]中(所放入的数与下标号相同);⑵在数组元素中,以下标为序,按顺序找到未曾找过的最小素数minp,和它的位置p(即下标号);⑶从p+1开始,把凡是能被minp整除的各元素值从a数组中划去(筛掉),也就是给该元素值置0;⑷让p=p+1,重复执行第②、③步骤,直到minp>Trunc(sqrt(N)) 为止;⑸打印输出a数组中留下来、未被筛掉的各元素值,并按每行五个数显示。
用筛法求素数的过程示意如下(图中用下划线作删去标志):①2 3 4 5 6 7 8 9 10 11 12 13 14 15…98 99 100 {置数}②2 3 4 5 6 7 8 9 10 11 12 13 14 15…98 99 100 {筛去被2整除的数}③2 3 4 5 6 7 8 9 10 11 12 13 14 15…98 99 100 {筛去被3整除的数}……2 3 4 5 6 7 8 9 10 11 12 13 14 15…98 99 100 {筛去被整除的数}Program Exam53;const N=100;type xx=1 .. N; {自定义子界类型xx(类型名)}V ar a: array[xx] of boolean; i,j: integer;BeginFillchar(a,sizeof(a),true);a[1] := False;for i:=2 to Trunc(sqrt(N)) doif a[I] thenfor j := 2 to N div I doa[I*j]:= False;t:=0;for i:=2 to N doif a[i] thenBeginwrite(a[ i ]:5); inc(t);if t mod 5=0 then writelnend;End.【例3】输入十个正整数,把这十个数按由大到小的顺序排列(将数据按一定顺序排列称为排序,排序的算法有很多,其中选择排序中的“简单选择排序”是一种较简单的方法)分析:要把十个数按从大到小顺序排列,则排完后,第一个数最大,第二个数次大,……;因此,我们第一步可将第一个数与其后的各个数依次比较,若发现,比它大的,则与之交换,比较结束后,则第一个数已是最大的数。
C语言打印100到200之间的素数
C语言打印 100到 200之间的素数
用C语言打印素数,我们首先要了素数的相关定义:只有1和它本身两个因数的自然数,也就是说除了1和它本身外,不能被其他自然数整除的 数就称为素数。
例如:101只能被1 和101 整除;103只能被1 和103 整除,所以他两都是素数
思路:
要判断一个数是否为素数可以验证从2开始到它本身的数里是否有可以被他取余数为0 的数字,如果有则证明它不是素数。反之则输出素 数。
1 # include<stdio.h>
2 int main()
3{
4 int i = 0;
5 int count = 0;//素数个数
6 for (i = 100;i <= 200;i++)
7{
8
int j = 0;
9
for (j = 2;j < i;j++)//判断
10
{
11
if (i%j == 0)
12
{
13
break;
ቤተ መጻሕፍቲ ባይዱ
14
}
15
}
16
if (i == j)
17
{
18
count++;
19
printf("%d ", i);
20
}
21 }
22 printf("count=%d\n",count);
23
24 return 0;
25 }
重庆理工大学c语言上机考试复习题 (1)
1、根据公式e=1+1/(1!)+1/(2!)+1/(3!)+……。
求e 的近似值,精度要求为10-6。
2、读入10个数,计算它们的和、积、平方和及和的平方。
3、计算并输出1!,2!,3!,4!,……,35!。
4、输入20个数,统计其中正、负和零的个数。
5、利用公式:)12)(12()2(......756653443*12222+-⨯⨯⨯⨯⨯⨯⨯⨯⨯=n n n π计算π的值(取前100项)。
6、利用公式:)12(1)1(......9171513114+⨯-++-+-=n n π计算π的值(省略的项都<10-5)。
7、编程计算0*1+2*3+4*5+……+100*101+101*102之和。
8、编程计算5/6+6/7+7/8+……+99/100+5!+6!+7!之和。
9、编程计算1!-2!+3!-4!+5!-6!之和。
10、编程计算1/(1+2)+2/(2+3)+3/(3+4)+……100/(100+101)之和。
11、编程计算(0+1)/1+(2+3)/3+(3+4)/4+……(99+100)/100之和。
12、求100 ~ 200中能被3或7整除的自然数。
13、统计77到210中偶数的个数。
14、统计7到91中能被3整除的奇数的个数。
15、7到91中有多少能既能被2又能被3整除的数。
16、显示7到100中所有不能被5整除的数,要求每行显示5个数。
17、找出1000之内的所有完数(完数是指:该数的各因子之和正好等于该数本身,例如:6的因子是1,2,3,而6 = 1+2+3,故6是完数)。
18、求2~1000中的所有亲密数对(亲密数对是指:如果a 的因子和等于b ,b 的因子和等于a ,则(a ,b )就是亲密数对)。
19、100元钱买100只鸡,已知公鸡3元1只,母鸡1元1只,小鸡1元3只,编程输出总的方案数以及每种方案中公鸡、母鸡、小鸡的数量。
20、100匹马驮100担货,大马驮3担,中马驮2担,小马驮0.5担,编程求大、中、小马的数量。
输出3到100的素数
1. 输出3 到100的素数#include<stdio.h> main(){int i,t;for (i=3;i<=100;i++){ for(t=2;t<=i;t++) if(i%t==0) break;if(t==i)printf("%d\t",i);}}2. 判断 a 是不是素数? #include<stdio.h> main(){int a,i; scanf("%d",&a); for(i=2;i<a;i++)if(a%i==0)break;if(a==i)printf("%d 是素数",a);elseprintf("%d 不是素数",a);}3. 编写程序,使数组10 个元素的值分别为0 到9,然后逆序输出。
#include<stdio.h>main(){int i,a[10];for(i=0;i<10;i++)a[i]=i;for(i=9;i>=0;i--)printf("%4d",a[i]);printf("\n");}4. 从键盘输入10 个数,找出最大值及其位置#include<stdio.h> void main()int ab[10],i,max,pos; for(i=0;i<10;i++) scanf("%d",&ab[i]);max=ab[0];pos=0;for(i=1;i<10;i++)if(max<ab[i]){max=ab[i]; pos=i;} for(i=0;i<10;i++)printf("max=%d,postion=%d",max,pos+1);}5. 判断是不是水仙花数#include<stdio.h>main(){int t,a,b,c;scanf("%d",&t); a=(t-t%100)/100;c=(t%100)%10;b=(t%100-c)/10;if(t==a*a*a+b*b*b+c*c*c)printf("%d",t);elseprintf(" 无效");}6. 在 3 到1000 的全部润年#include<stdio.h>main(){int year;for(year=3;year<=1000;year++){if(!(year%4==0&&year%100!=0||year%400==0)) continue;printf( “%4d ”,year);}}7. 求1+2+3+4 …+100 之和#include<stdio.h>(),≡E U Jc l r o ESVaPnou s⅜帑 宀=S =''p %3)t u ,z dω±H S ■+土O O L H VH见)」£O H SωΓ4≡M ω=5p %⅛p %H S=)t u ,z d=OOLH乂φ=ψw宀+±■= + S H S■OP7. 求n!#include<stdio.h> main(){int n,i,p=1;int n,i; scanf(“%d ”,&n); for(i=1;i<=n;i++) p=p*i;printf( “%ld\n ”,p); }8.输入三个实数a,b,c 要求从小到大的顺序输出#include<stdio.h>main(){float a,b,c,t;scanf("%f,%f,%f",&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;b=t;}if(b>c){t=b;b=c;c=t;}printf("%5.2f,%5.2f,%5.2f\n",a,b,c);}9. 判断年份是不是润年?#include<stdio.h>main(){int year;printf(" 请输入年份");scanf("%d",&year);{ if(year%4==0&&year%100!=0||year%400==0) printf("%4d 是闰年",year);elseprintf("%4d 不是润年",year);10. 寻找1-999 中的水仙花数#include<stdio.h>main(){int i,j,k;for(i=1;i<10;i++) for(j=0;j<10;j++)for(k=0;k<10;k++)if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)printf( "%d\t ",(i*100+j*10+k));}11. 比较大小#include<stdio.h> main() {int a,b,c,max; scanf("%d%d%d",&a,&b,&c); if(a>b) if(a>c)max=a;elsemax=c;else if(b>c) max=b;elsemax=c;printf("max=%d\n",max);}12.任意输入一行大写字母,将它们转换成小写字母后输出#include<stdio.h>main(){int i;char c;for(i=1;(c=getchar())!='\n';i++)putchar(c+32);}13.根据学生成绩打分数#include<stdio.h> main()int x;scanf("%d",&x); if(x>100||x<0) printf(" 无效分数");else{if(x<60)printf(" 不及格");else{if(x<70)printf(" 及格");else{if(x<80)printf(" 中等"); else{if(x<90)printf(" 良好");elseprintf(" 优秀"); }。
100-200的素数c语言
100-200的素数c语言我曾经遇到了一个非常有趣的问题:如何找出100到200之间的素数?素数是指除了1和自身以外没有其他因数的自然数。
我决定用C语言来解决这个问题,并将我的思路和代码分享给大家。
我们需要明确一点:素数只能被1和自身整除,因此我们可以通过遍历2到该数的平方根之间的所有自然数来判断一个数是否为素数。
如果在这个范围内找到了一个能整除该数的数,那么该数就不是素数。
接下来,我将介绍一种简单而高效的算法来找出100到200之间的素数。
请注意,为了遵守要求,我将不会在文章中插入任何计算公式或数学公式。
我们定义一个函数isPrime来判断一个数是否是素数。
该函数接受一个参数num,表示待判断的数。
我们将在函数内部实现上述的判断逻辑。
```c#include <stdio.h>int isPrime(int num) {if (num <= 1) {return 0;}for (int i = 2; i * i <= num; i++) {if (num % i == 0) {return 0;}}return 1;}int main() {int start = 100;int end = 200;printf("100到200之间的素数有:\n");for (int i = start; i <= end; i++) {if (isPrime(i)) {printf("%d ", i);}}return 0;}```上面的代码中,我们首先定义了一个isPrime函数来判断一个数是否是素数。
在主函数中,我们设置了起始数值start为100,终止数值end为200。
然后,我们使用一个for循环来遍历start到end 之间的所有数,并调用isPrime函数来判断每个数是否为素数。
如果是素数,则将其打印出来。
运行上述代码,我们会得到如下输出:```100到200之间的素数有:101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199```这些数字就是100到200之间的所有素数。
汇编语言输出100以内的素数心得
汇编语言输出100以内的素数心得汇编语言是一种底层的计算机语言,它直接与计算机的硬件进行交互,实现各种功能。
在学习汇编语言的过程中,我选择了输出100以内的素数作为练习的题目。
通过这个练习,我对汇编语言的结构和工作原理有了更深入的理解,同时也感受到了汇编语言的编写过程中的一些挑战与收获。
首先,为了输出100以内的素数,我需要理解什么是素数以及如何判断一个数是否是素数。
素数是只能被1和自身整除的自然数,也就是没有其他因数的数。
在汇编语言中,我可以使用一种非常直接的方式来判断一个数是否是素数,即通过试除法,逐个判断该数能否被小于自身的自然数整除。
通过循环的方式,我可以依次将2到该数的平方根之间的数与该数进行取余运算,如果结果为0,则说明该数不是素数。
否则,该数是素数。
然而,在具体实现的过程中,我遇到了一些困难。
首先,由于汇编语言是一种底层语言,它对于数据的处理相对较为复杂,需要通过位运算来实现。
在进行取余运算时,我首先要将被除数和除数存储到寄存器中,然后进行除法运算,再将结果存储到另一个寄存器中。
这种复杂的处理方式在一开始对我来说非常不习惯,需要我反复阅读文档来理解和熟悉汇编语言的指令和寄存器。
其次,在编写判断素数的循环过程中,我需要掌握如何进行循环和条件判断。
在汇编语言中,我可以通过跳转指令来实现循环和条件判断。
比如,当取余运算的结果为0时,我可以通过跳转指令跳转到不是素数的判断分支;当取余运算的结果不为0时,我可以继续进行下一轮循环。
这就需要我熟悉各种跳转指令的用法,并且合理地运用它们来实现素数判断的逻辑。
此外,为了输出100以内的素数,我还需要将素数输出到屏幕上。
在汇编语言中,我可以通过系统调用来实现屏幕输出。
通过将要输出的素数存储到寄存器中,并对寄存器进行读写,我可以将素数输出到屏幕上,让用户可以直观地看到结果。
这也需要我熟悉系统调用的过程和参数的设置。
通过这个练习,我深刻感受到了汇编语言的编写过程中的一些挑战与收获。
Python求出0~100以内的所有素数
Python求出0~100以内的所有素数质数⼜称素数。
⼀个⼤于1的⾃然数,除了1和它⾃⾝外,不能被其他⾃然数整除的数叫做质数;否则称为合数。
⼀、判断⼀个数是否为素数:基于定义def is_prime(num):if num <= 1:return '%d是⼀个合数' % numfor i in range(2, num):if not num % i:return '%d是⼀个合数' % numelse:return '%d是⼀个素数' % num考虑合数的性质def is_prime(num):if num <= 1:return '%d是⼀个合数' % numfor i in range(2, int(num/2)+1):if not num % i:return '%d是⼀个合数' % numelse:return '%d是⼀个素数' % num⼆、求出0~100以内的素数def all_prime(num):lst = []if num <= 1:return '0 ~ %d以内没有任何素数' % numfor i in range(2, num+1):for j in range(2, int(i/2)+1):if not i % j:breakelse:lst.append(i)return lstps:下⾯看下⼩编写的C语⾔求1-100以内的素数代码如下所⽰:#include <stdio.h>#include <math.h>void main(){for (int i = 1; i <= 100; ++i){int j = 2;for (; j<=sqrt(i); ++j){if (i%j == 0)break;}if (j>sqrt(i) && i != 1)printf("%d ", i);}system("pause");}总结以上所述是⼩编给⼤家介绍的Python求出0~100以内的所有素数,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
1-100之间的素数有哪一、,,,,,,,
1-100之间的素数有哪一、,,,,,,, 一到一百的素数有二、三、五、七、十一、十三、十七、十九、二十三、二十九、三十一、三十七、四十一、四十三、四十七、五十三、五十九、六十一、六十七、七十一、七十三、七十九、八十三、八十九、九十七;共25个。
素数又称质数,有无限个。
一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。
1、质数p的约数只有两个:1和p。
2、初等数学基本定理:任一大于1的自然数,要么本身是质数,要么可以分解为几个质数之积,且这种分解是唯一的。
3、质数的个数是无限的。
4、质数的个数公式π(n)是不减函数。
5、若n为正整数,在n²到(n+1)²之间至少有一个质数。
用筛法求100以内的素数
1. 用筛法求100以内的素数。
算法:先将1~100放置于一个一维数组中,然后依次判断每个数是否素数,若不是素数将该元素置0,最后输出不为0的数。
如何判断一个数是否素数?素数定义是只能被1和本身整除的数,设置除数n=2~a[i]-1特殊的两个数1、2,不需要判断定义变量:int a[100],i,n;输入数据:循环赋值,for(i=0;i<100;i++) a[i]=i+1;处理:双重循环,外层循环控制访问数组元素,内层循环控制除数的变化for(i=2;i<100;i++) for(n=2;n<=a[i]/2;n++) if(a[i]%n==0) a[i]=0;输出:for(i=0;i<100;i++)if(a[i]!=0) printf(“%3d”,a[i]);2. 编写一个程序,计算若干学生的某门功课的平均成绩、标准差,找出最高分和最低分。
算法:循环输入成绩,需要求和,然后求平均成绩;循环sqrt(求和(xi-aver)*(xi-aver))定义变量:float grade[N],max,min,aver,bzc,sum;int i;输入数据:for(i=0;i<N;i++) scanf(“%f”,&grade[i]);处理:sum=0; max=min=grade[0];for(i=0;i<N;i++) {sum=sum+grade[i];if(max<grade[i]) max=grade[i]; if(min>grade[i]) min=grade[i];}aver=sum/N;sum=0; for(i=0;i<N;i++) sum=sum+(grade[i]-aver)* (grade[i]-aver);bzc=sqrt(sum/N);输出结果3.编写一个程序,让计算机产生20个随机数,用选择法排序。
98 36 54 18 65 23 48 78 84 8for(i=0;i<N-1;i++){p=i;for(j=i+1;j<N;j++) if(a[p]>a[j]) p=j;if(p!=i) { t=a[p];a[p]=a[i];a[i]=t;}}设置一个变量p,去记住最小值的下标,4. 根据上题的内容1,编一程序在数组中查找一个数。