is_prime()实现中的错误 [英] Bugs in an is_prime() implementation

查看:167
本文介绍了is_prime()实现中的错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好专家,


以下is_prime函数没有调用库函数它

工作。


它是否有像整数溢出这样的错误:int factor;因素*因素,

或它不是单一进入/退出,或其他...谢谢。


/ *如果num是,则返回0一个素数否则1 * /

bool is_prime(int num)

{

int factor;

if (num< 2)返回1;

for(factor = 2; factor * factor< = num; factor ++)

if(num%factor == 0)

返回1;

返回0;

}


#include< stdio.h> ;

int main(无效)

{

for(int i = 0; i< 1000; i ++)

if(is_prime(i))

printf("%d",i);

返回0;

}


/ *

运行:C:\ MinGW \bin\mingw32-make.exe

gcc -ansi - 迂腐-Wall -W -c -o ao a.cpp

gcc ao bo -o a.out


按Enter键返回Source Insight ...


运行:D:\ working\c\a.out

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

101 103 1

07 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197

199 211 2

23 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313

317 331 3

37 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439

443 449 4

57 461 463 467 479 487 491 499 503 509 521 523 541 547 557 563 569 571

577 587 5

93 599 601 607 613 617 619 631 641 643 647 653 659 661 673 677 683 691

701 709 7

19 727 733 739 743 751 757 761 769 773 787 797 809 811 821 823 827 829

839 853 8

57 859 863 877 881 883 887 907 911 919 929 937 941 947 953 967 971 977

983 991 9

97

按Enter键返回Source Insight ...

* /

解决方案

lovecreatesbea ... @ gmail.com写道:


[C ++代码]



这个组处理C,而不是C ++。请在comp.lang.c ++中询问。


Harald van D?3k写道:


lovecreatesbea ... @ gmail.com写道:


>> [C ++ code]




这个小组处理的是C,而不是C ++。请在comp.lang.c ++中询问这个。



对不起,但添加了一个< stdbool.h代码

是合法的C.


-

Ian Collins。


Ian Collins写道:


Harald van D?3k写道:


lovecreatesbea ... @ gmail.com写道:


> [C ++代码]



此组处理C,而不是C ++。请在comp.lang.c ++中询问这个问题。



对不起,但添加了< stdbool.h的代码

是合法的C.



可以修改代码以使其成为有效的C99。代码是有效的

C ++(具有与OP声称的不同的行为)并在

C ++模式下编译。


Hello experts,

The following is_prime function doesn''t call a library function and it
works.

Does it have bugs like "integer overflow": int factor; factor * factor,
or it''s not single entry/exit, or others... Thank you.

/*return 0 if num is a prime number otherwise 1*/
bool is_prime(int num)
{
int factor;
if (num < 2) return 1;
for (factor = 2; factor * factor <= num; factor++)
if (num % factor == 0)
return 1;
return 0;
}

#include <stdio.h>
int main(void)
{
for (int i = 0; i < 1000; i++)
if (is_prime(i))
printf("%d", i) ;
return 0;
}

/*
Run: C:\MinGW\bin\mingw32-make.exe
gcc -ansi -pedantic -Wall -W -c -o a.o a.cpp
gcc a.o b.o -o a.out

Press the Enter key to return to Source Insight...

Run: D:\working\c\a.out
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
101 103 1
07 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197
199 211 2
23 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313
317 331 3
37 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439
443 449 4
57 461 463 467 479 487 491 499 503 509 521 523 541 547 557 563 569 571
577 587 5
93 599 601 607 613 617 619 631 641 643 647 653 659 661 673 677 683 691
701 709 7
19 727 733 739 743 751 757 761 769 773 787 797 809 811 821 823 827 829
839 853 8
57 859 863 877 881 883 887 907 911 919 929 937 941 947 953 967 971 977
983 991 9
97
Press the Enter key to return to Source Insight...
*/

解决方案

lovecreatesbea...@gmail.com wrote:

[C++ code]

This group deals with C, not C++. Go ask this in comp.lang.c++.


Harald van D?3k wrote:

lovecreatesbea...@gmail.com wrote:

>>[C++ code]



This group deals with C, not C++. Go ask this in comp.lang.c++.

Excuse me, but with the addition of an include of <stdbool.hthe code
is legal C.

--
Ian Collins.


Ian Collins wrote:

Harald van D?3k wrote:

lovecreatesbea...@gmail.com wrote:

>[C++ code]


This group deals with C, not C++. Go ask this in comp.lang.c++.

Excuse me, but with the addition of an include of <stdbool.hthe code
is legal C.

The code can be modified to become valid C99. The code as is is valid
C++ (with different behaviour than claimed by the OP) and compiled in
C++ mode.


这篇关于is_prime()实现中的错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆