C语言编程:/判断一个数是否为质数/。求帮助

2020-07-05

C语言编程:/*判断一个数是否为质数*/。求帮助


#include
main()
{
unsigned int n,i=2;
printf("Enter n=");
scanf("%d",&n);
for(i+2;i{
if(n%i==0)
break;
}
if(i==n)printf("Yes\n");
if(i=n)printf("NO\n");
}冲else 后面就错 你要用复合语 然else 后边只能给一条语句 也就是说不论你的条件是真是都会执行for 语句、
else{
n>2;
for(;i<=n;)
{
if(n%i==0)break;
i++;
}
}
if(i==n)printf("Yes\n");
if(i!=n)printf("NO\n");追问

呃,谢谢
不过,照你这样,依旧是错的
c语言入门编程题 判断一个数是否为质数


楼主,那个你x没输入,怎么把sqrt(x)赋k啊。
以下是标程:#include
int main()
{
int n;
int i,flag;
printf("请输入一个正x:");
scanf("%d",&n);
if(n<2)printf("不是质数.\n");
else {
flag=1;
for(i=2;i*i<=n;i++)
if(n%i==0)
{
flag=0;
break;//能被整除,非质数,退出循环。
}
if(flag)
printf("该数是质数.\n");
elseprintf("该数不是质数.\n");
}
getch();//用于显示
return 0;
}#include
#include
int main()
{
int x,i=2,n;

//double k=sqrt(x);
//----------错误

double k;
printf("请一个正整数x:");
scanf("%d",&x);

//修改
k=sqrt(x);

if(x==1)
printf("该数不是质数.\n");
else
{
while(i<=(int)k)
{
n=x%i;
if(n==0)
//printf("该数质数.\n");
// ------------------------错误
{
printf("该数不是质数.\n");
break;
}

/*else
i=i++; *///-------错误
i++;
}
//printf("该数为质数.\n");
//----------------------------错误
if(i>(int)k)printf("该数为质数.\n");
}
return 0;
}本回答被提问者采纳k=sqrt(x),此时x还没被赋值,运行结果肯定会出错的
判断一个数是否是素数的程序讲解

素数又称质数。所谓素数是指除了1和它本外,不能被任数整除的数。该代码的基本思路如果m不能被2~它的平方根中的任一数整除,m必定是素数。代码解析如下:main(){int m; // 输入的整数int i; // 循环次数int k; // m 的平方根scanf(%d,&m); //输入mk=sqrt(m); //对m开方赋给kfor(i=2;i<=k;i++) //从2到k依次加1循环if(m%i==0)break;//当m可以整除i时,退出,不整除,说明是素数if(i>=k+1)printf(%d is a prime number ,m);//i不小于k+1时,m是素数,否则,m不是素数elseprintf(%d is not a prime number ,m);}
扩展资料:判断素数的程序代码的另一思路:判断一个整数m是否是素数,只需把m被2~m-1之间的每一个整数去除,如果都不能被整除,那么m就是一个素数。代码及解析如下:#include int main(){int a=0; // 素数的个数int num=0; // 输入的整数printf("输入一个整数:");scanf("%d",&num);for(int i=2;i首先你要知道是,素就是我们所说的质数,只能被1和他整除的数就是素数,一般的算法思想呢就是从1开始一直循环到他本身,一一整除然后判断,如果还能被其他整数整除就不是素数,但是我们采用的算法是让m被2和sqrt(m)[这是m的开根值]之中的任何整数整除,那么我们的判断依据就是如果其中有一个数被整除了,那么i的值必小于sqrt(m),所以就不是素数,如果是素数那么那么就一直执行循环语句,直到i=k,然后跳出循环,这个时候i++,所以i的值就加1,这样可以判断i>=k+1,所以就是素数。答题的算法思想就是这样,不知道我讲清楚了没有,至于每一句的注释,楼上的也讲解了,有什么不懂的可以追问我。希望你能学好C语言。加油!!!本回答被网友采纳main()
{
int m,i,k;
scanf(%d,&m);//输入m;
k=sqrt(m);//对m赋给k
for(i=2;i<=k;i++) //从2到k依次加1循环
if(m%i==0)break;//m可以整除i退出,不整除,说明是素数
if(i>=k+1)
printf(%d is a prime number\n,m);//i不小于k+1时,m是素数,否则,m不是素数
else
printf(%d is not a prime number\n,m);
}就是一个for循环,m除以从二开始到sqrt(m)之间的数呢,如若能整除就跳出,那么i肯定小于k+1输出不是,如果是素数的话i会一直执行到i>k为止,输出是素数……首先先要知道如何判断一个素数啊,程序里k代表要判断的数,如果这个数能被2~它的平方根中的任一数整除的话它就不是素数了,否则就是素数。这里程序也是这个思想,你应该懂吧....本回答被提问者采纳
用java编程实现判断一个整数是否为质数


素数又称质数:除1和其之外,没有其它约数的正
2小的质数,也是唯一的数
1和0既不是质数又不是合数
合数
public static void prime(int num) {// 能求无限大的质数//但如果所求的范围太大,计算的时间需要很久
int n, m, i = 0;
label1: for (n = 2; n <= num; n++) {
for (m = 2; m <= n / 2; m++) {
if (n % m == 0)
continue label1;
}
i++;
System.out.println("第" + i + "个素数是:" + n);
}
}public class Test {

public static final int X=2;

public static final int Y=100;

/**

* 用Math类机函数产生10个2~100的正整数后逐个判断这10个数是不数。并判断的结果

* @param args

*/

public static void main(String[] args) {

int[] n=new int[10];//定义一个长度为10的整型数组

for(int i=0;i
n[i]=(int) (Math.random()*1000/(Y-X))+X;//给数组元素赋值,值为2~100的正整数

boolean b=true;

for(int j=2;j<=Math.sqrt(n[i]);j++){//判断是否为素数

if( n[i]%j==0){

b=false;

System.out.println("a["+i+"]="+n[i]+"不是素数!");

}

}

if(b){

System.out.println("a["+i+"]="+n[i]+"是素数!");

}

}

}

}追问

是判断是否为质数,不是素数用最简单的方法
int i;i为自己输入的整数
if( i%2!=0&&i%3!=0&&i%5!=0&&i%7!=0)
{
System.out.println("i为质素");
}import java.io.*;
import java.util.Scanner;

public class Prime {

public static void main(String args[]) {
System.out.println("请输入一个:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int count = 0;
if (isPrimes(num)) {
System.out.println(num + "是一个质数!");
}
else {
System.out.println(num + "不是一个!");
}
System.out.println(num+"3个质数为:");
num = num+1;

loop:while(count<3)
{
//num = num+1;
if(isPrimes(num))
{
System.out.println(num);
count++;
num++;
continue loop;
}
else
{
num++;
continue loop;
}

}
}

public static boolean isPrimes(int n) {
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}

}本回答被提问者采纳