首页 > 软件 > 判断输入的数是否为素数,如果不是,则继续输入,直到输入的数为素数并输出这个数

判断输入的数是否为素数,如果不是,则继续输入,直到输入的数为素数并输出这个数

软件 2023-02-07

JAVA,输入一个1-100的整数判断素数是素数继续输入,不是素数关闭程序

publicclassSuShu{
publicstaticbooleanisSuShu(inta){
for(inti=2;iif(a%i==0){
returnfalse;
}
}
returntrue;
}
publicstaticvoidmain(String[]args){
Scannersca=newScanner(System.in);
System.out.println("请输入一个1-100之间的整数");
intinput;
while(true){
input=sca.nextInt();
if(input>100||input<1){
System.out.println("超出范围请重新输入");
continue;
}else{
System.out.println("输入成功你输入的是:"+input);
if(isSuShu(input)){
System.out.println(input+"是素数!请继续。");
continue;
}else{
System.out.println(input+"不是素数!程序结束。");
break;
}
}
}
}
}

你的算法有问题,求素数为何要开方?

还有,多注意一些代码的重用性,能封装起来的就应该封装成一个方法。

C语言编程判断输入的正整数是否为素数。

输入:共两行,第一行一个整数,为输入正整数的个数n(1<=n<=1000);第二行n个空格隔开的正整数Ai(1 <= Ai <= 1000) 输出:一行,对于每个正整数,如果是素数则输出YES,否则输出NO,中间用空格隔开。 以下是我编写的程序 #include int main() { int n,x[1000],i,k,g=0; scanf("%d\n",&n); for(i=0;i<=n-1;i++) { scanf("%d",&x[i]); if(x[i]==1) printf("NO "); else if(x[i]==2) printf("YES "); else

C语言编程判断输入的正整数是否为素数。

将:for(k=2;k<=x[i]-1;k++)改成:for(g=0,k=2;k<=x[i]-1;k++)主要是在这个for循环前令g=0。

因为输入的不止一个数,开头的初始化g=0,在第一个数的时候就可能已经被改了。后面的数不重新初始化g=0,就不能保证对了。

判断一个正整数n是不是素数的思路:

思路1):因此判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数。
思路2):另外判断方法还可以简化。m 不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~√m之间的每一个整数去除就可以了。

如果 m 不能被 2 ~√m间任一整数整除,m 必定是素数。例如判别 17 是是否为素数,只需使 17 被 2~4 之间的每一个整数去除,由于都不能整除,可以判定 17 是素数。
原因:因为如果 m 能被 2 ~ m-1 之间任一整数整除,其二个因子必定有一个小于或等于√m,另一个大于或等于√m。

例如 16 能被 2、4、8 整除,16=2*8,2 小于 4,8 大于 4,16=4*4,4=√16,因此只需判定在 2~4 之间有无因子即可。

正确代码如下:

#include/*sqrt*/

#include/*scanf,printf,system*/

int isPrime(int n)//判断n是否为素数,如果是则返回1,否则返回0。

{

if(n<=1)return 0;//小于等于1直接退出。

int i;

for(i = 2; i <= (int)sqrt(n); i ++)//从2到算术平方根遍历。

if(!(n%i)) return 0;//存在约数,不是素数,返回0。

return 1;//不存在约数,返回1,表示为素数。

}

main ()

{

int num;

scanf ("%d", &num);

if ( isPrime( num) )//num是素数。

printf ("%d is a prime",num);

else

printf ("%d isn't a prime",num);//num不是素数。

system("PAUSE");//暂停界面。

return 0;

}

扩展资料:

输入一个正整数或0,判断是否为质数:

#include "stdio.h"

int main()

{

while(1)

{

int n,flag,i;

printf("请输入一个数:");

scanf("%d",&n);

flag = n/2+1;

if(n==0||n==1)

printf("%d既不是质数也不是合数\n",n);

else if(n==2)

printf("%d是质数\n",n);

else

{

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

{

if((n%i)==0)

{

printf("%d不是质数,是合数\n",n);

break;

}

if(i==flag&&(n%i)!=0)

printf("%d是质数\n",n);

}

}

}

}



判断输入的正整数是否为素数,如果是素数,输出Yes,否则输出No。(素数是指只能被1和自身整除的数

#include"stdio.h"
intmain()
{
intn,flag=1,i;
scanf("%d",&n);//输入一个数n,判断它是否是素数。
for(i=2;i{
if(n%i==0)//根据素数的定义n依次除以小于它本身大于1的数
{flag=0;//一旦有能被整除的数,表明n不是素数,使得flag=0。
break;
}
}
if(flag==0)//根据flag的值判断n是否是素数
printf("%d不是素数",n);
else
printf("%d是素数",n);
return0;
}

c语言编程:设计一个函数用于判断一个数是否为素数,如果是素数返回1,否则返回0。

源程序代码以及算法解释如下:

#define _CRT_SECURE_NO_WARNINGS

#include

int Func(int m)//判断函数

{

int n = 2;

while (n <= m && (m%n))//判断是否能被其他数整除

n++;

if (m == n)

return 1;

else

return 0;

}

int main()

{

int M_num;//定义变量

printf("请输入需要判断的数:\n");//文字提示

scanf("%i", &M_num);//循环输入数组元素

int i = Func(M_num);//判断是否是素数

if (i == 1)//输出结果

printf("输入的数是素数");

if (i == 0)

printf("输入的数不是素数");

printf("\n");

return 0;

}

程序运行结果如下:



扩展资料:

输出1-100之间的所有素数程序如下:

#include

int PrimeNumer(int x) //定义一个函数判断

{

assert(x > 0); //判断

int i; //被除数

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

{

if (x%i == 0)

{

return 0; //表示正常终止

}

}

return 1; //只是给主调函数一个标志,说明他的执行过程中遇到异常情况。 然后就返回主调函数来处理,继续执行。

}

int main()

{

int i,a;

int count = 0;

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

{

if (PrimeNumer(i)) //调用函数来判断

{

count++; //加入了一个计数器

printf("%d\n", i);

}

}

printf("素数出现的次数%d", count);

system("pause");

return 0;

}


标签:信息技术 素数 编程语言 C(编程语言) 编程

大明白知识网 Copyright © 2020-2022 www.wangpan131.com. Some Rights Reserved. 京ICP备11019930号-18