如何用T-SQL使用最短的语句输出100以内素数

合集下载

java输出1~100之间的全部素数的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个数,第⼆个循环看它是不是素数。

例6、用筛法求出100以内的全部素数,并按每行五个数显示

例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】输入十个正整数,把这十个数按由大到小的顺序排列(将数据按一定顺序排列称为排序,排序的算法有很多,其中选择排序中的“简单选择排序”是一种较简单的方法)分析:要把十个数按从大到小顺序排列,则排完后,第一个数最大,第二个数次大,……;因此,我们第一步可将第一个数与其后的各个数依次比较,若发现,比它大的,则与之交换,比较结束后,则第一个数已是最大的数。

输出3到100的素数

输出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>main(){int i,s;s=0;for(i=1;i<=100;i++)s=i+s;printf("s=%d",s);}或者#include<stdio.h>main(){int i,s;s=0;i=1;do{s=s+i;i++;}while(i<=100);printf("s=%d,i=%d\n",s,i);}7.求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;elseif(b>c)max=b;elsemax=c;printf("max=%d\n",max);}12.任意输入一行大写字母,将它们转换成小写字母后输出。

筛法--求1到100的所有素数

筛法--求1到100的所有素数

筛法--求1到100的所有素数⽤筛法求出100以内的全部素数,并按每⾏五个数显⽰我们知道⼀个合数可以分解了⼏个质数想乘,从2开始知道根号下n每次判断⼀个数是否为素数,如果为素数,就把所有能被这个数整除的数排除,即不是素数。

⾸先是⼀个判断素数的函数1bool sushu(int x)2 {3if (x==2)4return true;5for (int i = 2;i <= sqrt(x);i++)6 {7if (x%i==0)8return false;9 }10return true;11 }把能被素数整除得数排除1for (int i = 2;i <= sqrt(n);i++)2 {3if (sushu(i))4 {5for (int j= 2;j <= n/i;j++)6 {7 a[i*j]=false;8 }9 }10 }完整代码:1 #include <iostream>2 #include <cstdio>3 #include <cstring>4 #include <math.h>5 #include <algorithm>6 #include <iomanip>7using namespace std;8bool sushu(int x)9 {10if (x==2)11return true;12for (int i = 2;i <= sqrt(x);i++)13 {14if (x%i==0)15return false;16 }17return true;18 }19int main()20 {21int const n = 100;22bool a[10000];23 memset(a,true,sizeof(a));24 a[1]=false;25for (int i = 2;i <= sqrt(n);i++)26 {27if (sushu(i))28 {29for (int j= 2;j <= n/i;j++)30 {31 a[i*j]=false;32 }33 }34 }35int ans=0;36for(int i = 1;i <= n;i++) 37 {38if (a[i]){39 printf ("%-5d",i);40 ans++;41 }42if (ans==5)43 {44 ans=0;45 cout<<endl;46 }47 }48return0;49 }。

JAVA——求出100以内的素数,并通过这些数在屏幕上5个一行地显示出来

JAVA——求出100以内的素数,并通过这些数在屏幕上5个一行地显示出来

JAVA——求出100以内的素数,并通过这些数在屏幕上5个⼀⾏地显⽰出来设置⼀个变量n,然后设置⼀个循环,使得n=2,然后n依次递增并且要⼩于100,然后就是判断数是不是素数,然后输出即可。

1. 先建⽴⼀个类,在这个类⾥⾯对100以内的数进⾏判断。

这⾥是设置了两个相当于计数器的变量,⼀个是计数是否出了⾃⼰和1外,还有别的数可以除尽。

还有⼀个是因为他要求5个为⼀⾏输出,对其进⾏计数。

在每次循环完成的时候,记得把计数器的值调为0,否则就会只输出2,3.package shu;public class sushu {private int n;private int a=0;private int b=0;public sushu() {}public void exit() {for(n=2;n<100;n++) {for(int j=2;j<n;j++){if(n%j==0)a++;}if(a==0) {System.out.print(n+" ");b++;if(b%5==0)System.out.println("\n");}a=0;}}}2. 主函数直接定义变量,调⽤即可package shu;public class sushumain {public static void main(String[] args) {// TODO Auto-generated method stubsushu c1=new sushu();c1.exit();}}3. 实验结果为:。

100以内的质数c语言程序

100以内的质数c语言程序

100以内的质数c语言程序质数是指只能被1和自身整除的数,它在数学中有着重要的地位和应用。

在计算机编程中,判断一个数是否为质数也是一个常见的问题。

本文将介绍如何使用C语言编写一个程序来判断100以内的质数。

在C语言中,我们可以使用循环和条件判断来实现质数的判断。

首先,我们需要定义一个函数,例如isPrime,用于判断一个数是否为质数。

函数的输入参数为一个整数n,返回值为一个布尔类型的结果,表示n是否为质数。

接下来,我们可以使用一个循环来遍历100以内的所有数,并调用isPrime函数来判断每个数是否为质数。

如果某个数是质数,则将其输出。

下面是具体的C语言代码实现:```c#include <stdio.h>#include <stdbool.h>bool isPrime(int n) {if (n <= 1) {return false;}for (int i = 2; i * i <= n; i++) {if (n % i == 0) {return false;}}return true;}int main() {for (int i = 2; i <= 100; i++) {if (isPrime(i)) {printf("%d ", i);}}return 0;}```在上面的代码中,我们使用了一个布尔类型的函数isPrime来判断一个数是否为质数。

首先,我们判断如果n小于等于1,则直接返回false,因为1不是质数。

然后,我们使用一个循环来遍历从2到n的平方根之间的所有数,判断n是否能被这些数整除。

如果能被整除,则说明n不是质数,返回false;如果不能被整除,则说明n 是质数,返回true。

在主函数main中,我们使用一个循环来遍历2到100之间的所有数,对每个数调用isPrime函数进行判断。

如果返回值为true,则输出该数,即表示该数是质数。

C程序设计-求100以内所有素数

C程序设计-求100以内所有素数

C程序设计-求100以内所有素数1、提示:素数又叫质数,指只能被1和自己本身整出的自然数(1和0即非质数又非合数)方法一:#include#includevoid main(){int number = 2;int i;for(number ; number<=100; number++){ //1号for循环for ( i=2; i<=sqrt(number); i++){ //2号for循环if (number%i == 0){break;}}if (i>sqrt(number)) { //如果2号for循环结束时,if语句从来没执行,那么i的值肯定大于sqrt(number),所以用这个表达式来判断是否为素数printf("%d\n",number);}}}方法二(笨,但却很容易理解的方法,设置标志变量flag)#include#includevoid main(){int number = 2;int i;char flag = 0;for(number ; number<=100; number++){flag = 1;for ( i=2; i<=sqrt(number); i++){if (number%i == 0){flag = 0; //用标志变量来判断for循环是否成功进入if语句break;}}if (flag == 1) {printf("%d\n",number);}}}2、这里用到了sqrt()函数,sqrt的全称是squre root 即平方根,使用时别忘了引入头文件#include<math.h>3、求100以内的素数,再判断某数n是否为素数时,不需要从2一直除到n,只需要从2除到sqrt(n)【注意sqrt(n)也要判断】即可。

python如何求100以内的素数

python如何求100以内的素数
输出结果为:
[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]
实例补充:
def all_prime(num): lst = [] if num <= 1: return '0 ~ %d以内没有任何素数' % num for i in range(2, num+1): for j in range(2, int(i/2)+1):
if not i % j: break else: lst.append(i) return lst
到此这篇关于python如何求100以内的素数的文章就介绍到这了,更多相关如何用python求100以内的素数内容请搜索以前的文 章或继续浏览下面的相关文章希望大家以后多多支持!
到此这篇关于python如何求100以内的素数的文章就介绍到这了更多相关如何用python求100以内的素数内容持脚本之家
python如何求 100以内的素数
方法一,用for循环来实现
num=[]; i=2 for i in range(2,100):
j=2 for j in range(2,i): if(i%j==0):
break else: num.append(i) print(num)
方法二,用函数来实现
import math def func_get_prime(n): return filter(lambda x: not [x%i for i in range(2, int(math.sqrt(x))+1) if x%i ==0], range(2,n+1)) print func_get_prime(100)

输出100-200之间的所有素数并求和程序

输出100-200之间的所有素数并求和程序

输出100-200之间的所有素数并求和程序前⼏天⼀个朋友让帮忙写⼀个求100-200之间素数,并求和的程序,记录⼀下。

(素数就是质数,就是只能被1整除,不能被其他数整除的数)java程序为:public static void main(String[] args) {//程序打印出从100到200的所有素数并求和;int Sum = 0;for (int i = 100; i <= 200; i++) {boolean flag = true;/*内嵌了⼀个for循环,作⽤是⽤100到200之间的每⼀个数,从2⼀直除到它本⾝,如果等于0的话,那么就不属于素数,就把flag置为false*/ for (int j = 2; j <= i - 1; j++) {if (i % j == 0)flag = false;}if (flag) {//只有当flag为true的时候,才会这⾥⾛。

Sum = Sum + i;//每⼀次循环都让sum加上这个素数i,然后重新赋值给sumSystem.out.print(i+",");}}System.out.println("所有素数总和为:"+Sum);}⽹友写的版本为:#include <iostream.h>//程序打印出从100到200的所有素数并求和;void main(){cout<<"100-200之间的所有素数为:"<<endl; /*这是提⽰语句,没有实际作⽤;*/int k=0; //在主程序中定义了⼀个整型变量k,⽤来存放下载所有质数的和,默认值是0;/*下⾯的是双FOR循环,外⾯的循环从100开始,以步进为1,递增到200,判断这之间的每⼀个数是否为质数*/for (int i=100;i<=200;i++){int m=0;/*m是计数器,它的作⽤很重要,每循环⼀次,它要⾃动清零,做好下次计数的准备*//*内嵌了⼀个for循环,作⽤是⽤100到200之间的每⼀个数,从1⼀直除到它本⾝,⽐如第⼀个数100,从1开始除,⼀直除到它本⾝*/for (int a=1;a<=i;a++){/*每除⼀次,如果余数为0,那么计数器m的值⾃增加1*/if(i%a==0) m++;}/*经过了⼀次循环,结果出来了,如果m的值为2,这就说明了这个数只能被1和它本⾝整除,这个就是质量数了.接着把这个数打印出来,后⾯还根了⼀个k+=i;语句,这是把每⼀个得出的质数⾃加,并赋给k本⾝,以便求出这些质数的和*/if(m==2){ cout<<i<<"";k+=i;}}cout<<endl;cout<<"这些素数的和为:"<<k<<endl;/*这⾥就得出了所有求得的质数的和了,也就是k最终的值*/}所有的质数为:101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199所有素数总和为:3167。

【C语言】经典——判断100以内的素数

【C语言】经典——判断100以内的素数

【C语⾔】经典——判断100以内的素数
/*将100以内的素数⽤数组保存起来,再将数组⾥的值打印出来*/
#include <stdio.h>
int Pd_Ss(int i);
int main(){
int a[100] = {0}; //⽤于存储素数
int i = 0,k = 0; //⽤于循环的计数
printf("100以内的素数有:\r\n");
for(i = 2; i<=100 ;i++){ //判断2-100的所有数
if(Pd_Ss(i) == 1){ //调⽤函数判断如果函数返回1,则将i的值录⼊数组
a[k++]=i; //将素数存⼊数组
}
}
for(i = 0; i<k; i++){
printf("a[%d]=%d\r\n",i,a[i]); //输出素数
}
printf("\r\n"); //换⾏
return0;
}
int Pd_Ss(int i){ //判断素数的函数
int j;
for(j = 2;j * j <= i ; j++){
if(i % j == 0){ //如果取余为0,则返回0(退出函数)
return0;
}
}
return1; //返回1
}
备注:该程序代码⽐较基础,所有程序中的变量名⽐较随意
判断素数的函数(Pd_Ss)的思路:利⽤循环,判断 i 的值与 j 的平⽅,当 j 平⽅⼩于 i 时,进⼊循环,判断此时的 i 能否整除 j,如果能整除,说明 i 不是素数,返回0退出函数,否则返回 1;。

输出1-100之间的所有质数

输出1-100之间的所有质数

输出1-100之间的所有质数
质数定义:在⼤于1的⾃然数中,除了1和它本⾝以外不再有其他因数,这样的数称为质数。

也就是说质数只能被1或者其本⾝两者整除。

思路:要判断n是否是质数,可以⽤n除于不⼤于n的整数(即n%m),当且仅当(n%m==0)&&(n==m)时,n为质数。

⽅法⼀:
public static void prime_1() {
for(int i=2;i<100;i++){
loop:for(int j=2;j<=i;j++){//给内循环定义⼀个标签
if(i%j==0){
if(i==j){//如果i!=j,说明i还能被其他的数整除,i不是质数
System.out.println(i);
}else{
break loop;//跳出内循环
}
}
}
}
}
⽅法⼆:
public static void prime_2() {
int j;
for(int i=2;i<100;i++){
j=2;
while(i%j!=0){
j++;
}
if(i==j){//如果i!=j,说明i还能被其他的数整除,i不是质数
System.out.println(i);
}
}
}
如果想要求所以质数的和,只要在循环⾥⾯定义int sum=0;每当判断是质数时,sum+=i,这样就可以求出所有质数的和了。

用C语言实现:打印100-200之间的素数。

用C语言实现:打印100-200之间的素数。

⽤C语⾔实现:打印100-200之间的素数。

在编程之前,⾸先我们要了解素数的定义:在⼤于1的⾃然数中,除了1和它本⾝以外不再有其他因数。

因此,我们会最先想到⼀个⽅法:设100~200间的这个数是i,⽤i去分别除以2~(i-1)间的每⼀个数。

即:#include<stdio.h>int main(){int i, j;for (i = 100; i <= 200; i++){for (j = 2; j <= i-1; j++){if (i%j == 0)break;//如果能整除就跳出该次循环,避免多余运算}if (j==i)//该条件代表没有整除。

printf("%d ", i);}printf("\n");system("pause");return0;}但是运⽤这种⽅法进⾏编程,会使代码过于繁琐,系统执⾏速度较慢,所以我们继续探究是否能将该代码进⾏优化。

这⾥有两种优化的⽅法:第⼀种:因为i不可能整除⽐i/2更⼤的数,所以我们可以设置第3个变量t,⽤来存储i/2的值。

#include<stdio.h>int main(){int i, j,t;for (i = 100; i <= 200; i++){t = i / 2;for (j = 2; j <= t; j++){if (i%j == 0)break;}if (j>t)printf("%d ", i);}printf("\n");system("pause");return0;}第⼆种:相⽐于i/2,⽤t来储存i的平⽅根会更加优化这种算法。

但这种算法需要引⼊新的头函数math.h,和新的函数sqrt()开⽅函数。

#include<stdio.h>#include<math.h>int main(){int i, j, t;for (i = 100; i <= 200; i++){t = sqrt(i);//开⽅函数for (j = 2; j <= t; j++){if (i%j == 0)break;}if (j>t)printf("%d ", i);}printf("\n");system("pause");return0;}到这⼀步我们只是优化了内循环过程,我们还可以对外循环进⾏优化。

素数输出——精选推荐

素数输出——精选推荐

素数输出(1)计算并输出3~100之间的素数。

(2)编程满⾜下列要求:1)按照每⾏5个输出;2)输出任意两个整数之间的所有素数;3)输⼊两个整数,输出这两个整数之间的最⼤的10个和最⼩的10个素数。

1package素数;2import java.util.*;3public class Sushu {4static Scanner x=new Scanner(System.in);5public void menu1() {6int j;7int count=0;8 System.out.println("3~100之间的素数");9for (int i = 3; i <= 100; i++) // 数从3开始循环10 {11for(j = 2;j<=Math.sqrt(i);j++)12if(i%j==0)break;13if(j>Math.sqrt(i))14 {15 count++;16if(count%5==0) {//控制每⾏输出5个素数17 System.out.print(i);18 System.out.print("\n");19 }20else System.out.print(i+" "); // 如果是就打印出数字21 }22 }23 System.out.println("\n");24 }25public void menu2() {26int j,a,b;27int count=0;28 System.out.println("请输⼊两个任意的正整数,前者⼩与后者:");29 a=x.nextInt();30 b=x.nextInt();31for (int i = a; i <= b; i++) // 数从3开始循环32 {33for(j = 2;j<=Math.sqrt(i);j++)34if(i%j==0)break;35if(j>Math.sqrt(i)&&i!=0&&i!=1)36 {37 count++;38if(count%5==0) {//控制每⾏输出5个素数39 System.out.print(i);40 System.out.print("\n");41 }42else System.out.print(i+" "); // 如果是就打印出数字43 }44 }45 System.out.println("\n");46 }47public void menu3() {48int j,a,b;49int count=0;50int m[]=new int[1000];51 System.out.println("请输⼊两个任意的整数,前者⼩与后者:");52 a=x.nextInt();53 b=x.nextInt();54for (int i = a; i <= b; i++) // 数从3开始循环55 {56for(j = 2;j<=Math.sqrt(i);j++)57if(i%j==0)break;58if(j>Math.sqrt(i)&&i!=0&&i!=1)59 {60 m[count]=i;61 count++;62 }63 }64 System.out.println(a+"与"+b+"之间最⼩的10个素数:");65for(int k=0;k<10;k++) {66if(k%5==0&&k!=0) {//控制每⾏输出5个素数67 System.out.print("\n");68 }69 System.out.print(m[k]+" ");70 }71int cn=0;72 System.out.print("\n"+a+"与"+b+"之间最⼤的10个素数:");73for(int p=count-10;p<count;p++) {74if(cn%5==0) {//控制每⾏输出5个素数75 System.out.print("\n");76 }77 System.out.print(m[p]+" ");78 cn++;79 }80 System.out.println("\n");81 }82public void menu() {83 System.out.println(" 素数系统");84 System.out.println("1.3~100之间的素数,每⾏5个输出");85 System.out.println("2.任意两个整数之间的所有素数,每⾏5个输出");86 System.out.println("3.两个整数之间的最⼤的10个和最⼩的10个素数,每⾏5个输出");87 System.out.println("0.退出");88 System.out.print(" 请选择:");89 }90public static void main(String[] args) {91 Sushu a=new Sushu();92for(; ;) {93 a.menu();94int N=x.nextInt();95switch(N) {96case 1:a.menu1();break;97case 2:a.menu2();break;98case 3:a.menu3();break;99case 0:break;100 }101 }102103 }104 }结果截图:。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档