嘿伙计们所以我需要制作一个程序,要求用户输入一个数字作为参数,然后告诉他们是否是素数,否则为0。所以我到目前为止的代码如下所示,但我对如何使它运行所有可能的值并确保它不是非素数有点困惑。现在发生的事情是程序打开,我输入一个值,没有任何反应。注意:我在标题中有数学,因为我不确定在这个阶段是否需要它。
编辑:因此我建议进行了更改,并且在我编写程序的同时添加了一个循环我在“ 控制线之间获得警告可能会触及无效功能的结束 ”。然而,当我输入一个数字而且输入相反的时候,程序就会编辑,无论是否是一个主要数字,我会收到错误的回复说“ 浮动点异常:8 ”。
编辑2:浮动点错误已经被修复,而现在程序似乎认为每个数字都是非 - 主要和输出这个方式。我看不出为什么要做这件事。我还没有得到' 控件可以达到无效功能 '警告
#include <stdio.h>
#include <math.h>
int prime(int a){
int b;
for(b=1; b<=a; b++){
if (a%b==0)
return(0);
}
if(b==a){
return(1);
}
}
int main(void){
int c, answer;
printf("Please enter the number you would like to find is prime or not= ");
scanf("%d",&c);
answer = prime(c);
if(answer==1){
printf("%d is a prime number \n",c);
}
else
printf("%d is not a prime number\n",c);
}
答案 0 :(得分:1)
1。你从未初始化i
(它有不确定的值 - 局部变量)。
2。您永远不会调用函数is_prime
。
使用循环将是个好主意。与你现在所拥有的相比。
答案 1 :(得分:0)
我建议你从试验部门开始。你需要除以最小数字集来确定a
是否为素数?你什么时候可以证明,如果a
有一个因子q
,它必须有一个较小的因子p
? (提示:它有一个主要的分解。)
答案 2 :(得分:0)
我刚刚修改了你的功能。这是代码
#include <stdio.h>
#include <math.h>
int prime(int a)
{
int b=2,n=0;
for(b=2; b<a; b++)
{
if (a%b==0)
{
n++;
break;
}
}
return(n);
}
int main(void)
{
int c, answer;
printf("Please enter the number you would like to find is prime or not= ");
scanf("%d",&c);
answer = prime(c);
if(answer==1)
{
printf("%d is not a prime number \n",c);
}
else
{
printf("%d is a prime number\n",c);
}
return 0;
}
解释 -
如果您有任何疑问,请让我听听。
答案 3 :(得分:0)
您的程序在您的主要查找算法中出现的一些错误:
1
除以零,它是真的(所有数字都可以被1整除)。a
,其模数也将为零(所有数字都可被自身整除)。1
和itself
整除。而已。所以你不能在那个循环中测试那个。 在 main
上,您获得的错误(控件达到非空函数的结尾)是因为您将main
声明为返回int
。
int main(void)
要解决这个问题,您应该在return 0;
函数的末尾添加main
语句。贝娄,一个有效的代码。
#include <stdio.h>
#include <math.h>
int prime(int a)
{
int b;
for (b = 2; b < a; b++) {
if (a % b == 0)
return (0);
}
return 1;
}
int main(void)
{
int c, answer;
printf
("Please enter the number you would like to find is prime or not= ");
scanf("%d", &c);
answer = prime(c);
if (answer == 1) {
printf("%d is a prime number \n", c);
} else {
printf("%d is not a prime number\n", c);
}
return 0;
}
<小时/> 另外,请勿使用 CAPSLOCK 来写完整句子。的 Seems like you're yelling. 强>
答案 4 :(得分:0)
从数学上讲,数字的最大除数可以与数字的平方一样大,因此我们只需要循环直到sqrt(number)。
有效功能为:
//Function that returns 1 if number is prime and 0 if it's not
int prime(number) {
int i;
for (i = 2; i < sqrt(number); i++) {
if (a % i == 0)
return (0);
}
return 1;
}
答案 5 :(得分:0)
#include<stdio.h>
int main()
{
int n , a, c = 0;
printf ("enter the value of number you want to check");
scanf ("%d", &n);
//Stopping user to enter 1 as an input.
if(n==1)
{
printf("%d cannot be entered as an input",n);
}
for(a = 2;a < n; a++)
{
if(n%a==0)
{
c=1;
break;
}
}
if(c==0 && n!=1)
{
printf("%d is a prime number \n",n);
}
else
{
if(c!=0 && n!=1)
{
printf("%d is not a prime number \n",n);
}
}
return 0;
}