// Find all prime numbers between 1 and 100#include <iostream>#include <cmath>using namespace std; int main() { int counter; // loop counter int count_two; // counter for second loop int val; // equals the number of count,used in division to check for primes bool check; check = true; for(counter = 1; counter <= 100; counter++){ val = counter; for(count_two = 2; count_two <= 9; count_two++){ if((val % count_two) == !(check)){ cout << val << " is a prime number.\n"; } } } return 0;}// program dIDn't work properly because of needless complication; all that needs to be checked for is whether a number is divisible by two/**********correct code***********#include <iostream>using namespace std;int main(){ int i,j; bool isprime; for(i=1; i < 100; i++) { isprime = true; // see if the number is evenly divisible for(j=2; j <= i/2; j++) // if it is,then it is not prime if((i%j) == 0) isprime = false; if(isprime) cout << i << " is prime.\n";}return 0;}*********************************/
从我可以收集的信息来看,我在这里是一条相当正确的道路.我认为我使用双循环和过度使用变量使事情变得复杂,这可能导致程序工作不正确 – 如果需要我可以发布输出,但这肯定是错误的.
我的问题基本上是这样的:我到底出错了什么地方?我不需要有人来重做这个,因为我想自己更正代码,但我已经看了一段时间,并且无法弄清楚为什么我的工作不起作用.此外,由于我对此不熟悉,因此任何有关语法/可读性的输入都会有所帮助.提前致谢.
解决方法 事实上,你的代码说如果一个数字可以被2到9中的任何数字整除,那么它就是素数.你需要一个bool变量来要求它是全部而不是任何,你还需要改变这一行:if((val % count_two) == !(check)){
由于check = true,因此解析如下:
if ((val % count_two) == !true){
和
if ((val % count_two) == false){
和
if ((val % count_two) == 0){
(注意false值是如何转换为0.有些语言会在这里产生编译错误.C将其转换为整数).
事实上,这与你想要的相反.相反,写下这个,这是正确和清晰的:
if (val % count_two != 0) {
最后,为了可读性(和方便!),你可以做的一件事是写i,j和k而不是counter,count_two和count_three.这三个字母被程序员普遍认为是循环计数器.
总结以上是内存溢出为你收集整理的学习C,从书中寻找对该项目的澄清全部内容,希望文章能够帮你解决学习C,从书中寻找对该项目的澄清所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)