程序的素数C语言纠正错误,C语言一到一百找到素数哪里出错

发布于 科技 2024-06-20
13个回答
  1. 匿名用户2024-01-29

    #include

    #include

    #define max 100

    int main()

    int z,c=0,i,j,k,n,a[max];

    int flag;添加了判断标志。

    scanf("%d",&n);

    if(2<=n) 质数 2 首先被取出,因为它是唯一的偶数。

    a[c++]=2;

    for(i=3;i<=n;i+=2) 来确定每个奇数是否是素数,因为偶数肯定不是素数。

    flag=1;在判断每个数字之前,将标志设置为 1for(j=3; j 这里实际上可以更快,但需要引入。

    z=i%j;

    if(z==0)

    flag=0;如果可整除,flag=0 表示它不是素数。

    break;

    if(flag) 如果 flag=1 不变,则表示没有可整除的数字,i 是奇数。

    a[c++]=i;

    for(i=0;iprintf("%d ",a[i]);

    printf("%d",c);

    system("pause");

    return 0;

  2. 匿名用户2024-01-28

    切换到 A-1 绝对是可能的,但不需要那么多周期。

    为什么选择A2? 假设一个数不是素数,那么 1 (a-1) 乘以等于 a 之间一定有两个数,这两个数有什么特点?

    两者都等于 2

    任何一个都等于 2 且小于 2

    要么它们都小于 2

    这些点不难得到,对于数字 4,它的平方的一半等于自身,所有大于 4 的数字的平方的一半都大于自身,所以如果一个数 a 不是素数,那么在 1 a 2 的中间一定有一个可以整除的数字, 如果在 1 a 2 的中间没有可以整除的数字,那么这个数字 a 一定是素数。

    对于你说的 1 a-1 之间的,对于素数,循环数是相同的,而对于非素数,a-1 浪费了许多不必要的循环。

  3. 匿名用户2024-01-27

    在键盘上输入 n 以确定 n 是否为素数。

    #include

    main()

    if(i==n)

    printf("您输入的 %d 是质数! ",n);

    elseprintf("您输入的 %d 不是质数! ",n);}

  4. 匿名用户2024-01-26

    使用 2 代替 a-1 是为了提高程序效率,只要 2 和 2 之间没有可整除性,剩下的一半就不可整除。

  5. 匿名用户2024-01-25

    事实上,i<=sqrt(a) 就足够了,这是判断素数最经济的计算方法。 A 2 其次,A-1 是最贵的。

  6. 匿名用户2024-01-24

    因为后半部分不需要判断,所以可以根据前半部分来判断数字。 它更简洁,还可以打开根数。

  7. 匿名用户2024-01-23

    使用该函数确定它是否是。

    使用数组来存储找到的素数。

    如果你搜索它,有很多例程。

    作为参考,略有变化。

    就是这样。

  8. 匿名用户2024-01-22

    我不知道,太乱了,我看不懂你的逻辑。 j = 2, j = 3 没问题; j = 4 似乎在 while 循环中,加上判断,当 j 是偶数时,它跳出 while 循环,即在 if(j % n != 0) 在底部添加相应的 else break;

  9. 匿名用户2024-01-21

    因为在for语句中,一旦有某个数字是这个数字的因数,那么break语句就被执行了,跳出了for循环,这个时候,我肯定会<=k,也就是说,这个时候i=k+1,那么就证明for语句的所有循环都执行完了, 也就是说if语句中的语句还没有执行,也就是说,这个数在2k之间没有因数,那么,这个数字也是一个质数。

  10. 匿名用户2024-01-20

    例如,判别素数的方法:

    例如,这个数字 m=127,当我们判断它是否为素数时,我们需要使用从 i 开始的 2 到 126 的整数作为除数来计算 m i 是否可整除,如果是可整除的,则电流 i 是 m 的因数,m 不是素数,程序中的 m%i==0 就是这个判断, 但判断是除法的余数是否为 0。

    从数学上讲,我们发现没有必要计算 2 到 126 作为除数,而只需要计算 2 到根 m(对于 m=127,11 即可得到判断),因此您将看到循环条件的结束变成了根 m。 就好像你已经判断出m除以4是取之不尽用之不竭的,你不能数m除以4的平方16,你肯定不会被除。 有关详细信息,请参阅数学中对此的解释。

    此外,在程序中,k=sqrt(m); 应该写成 k=sqrt((double)m);

  11. 匿名用户2024-01-19

    你确定这个程序是正确的吗? 断点的位置,括号,以及它的乱七八糟,如果 k 之前没有 bradk 跳跃,那么 k+1 之后就没有必要测试了,它一定是素数。 所以 i>k+1 if(m%i==0) 只是反复测试这句话。

    但是你的程序本身应该有问题。 你错了。 没有逻辑写太乱了。

  12. 匿名用户2024-01-18

    这是真的...... m 除以 2 和根 m 之间的数字,如果一个数字被除以,它就不是素数。 当 i 自增大于根数 m 并且没有除法时,则 m 为素数。

  13. 匿名用户2024-01-17

    第一:我不明白n的用途。

    第二:任何数都可以被 1 整除,所以 y 从 1 开始没有意义 第三:y 的上限不能小于 x ,如果 y 等于 x,那么 x 必须能被 y 整除

    第四:如果 x 能被 y 整除,那么打破并让 y 自我增加是没有意义的。

相关回答
9个回答2024-06-20

#include

定义 n 50 * 可以是任何数字的阶乘,当然,计算机可以保存的下一个 * >>>More

9个回答2024-06-20

这里 s 是数组的名称 (char s[ ],p 是指针变量。 >>>More

6个回答2024-06-20

审判部门 首先要介绍的当然不是"审判庭"仅此而已。 考虑到有些读者是菜鸟,请解释一下。 >>>More

10个回答2024-06-20

这句话的意思是,从2到k+1之间没有能被n整除的数字,所以输出是素数,当然不能被else代替,否则一些非素数的数字也会作为素数输出。