法一:错误例子对比理解int pot位置对于函数的影响
#include<stdio.h>
int main()
{
/*思路如下,
1,先将100-200运出出来 要运用到for循环,
2,然后判断是否为素数,具体措施就是分别除自身和1以外小于自身的数看余数是否为零,若输入i则除2到i-1
3,将2到i-1运行出来 还要运用到for循环*/
int pot = 1;//添加变量的原因在+号处//注意此处
for (int i = 100; i <= 200; i++)//100-200的罗列
{
for (int j = 2; j < i; j++)//2到i-1的罗列,接下来要判断是否能整除运用到if语句;
{
//before :if (i % j == 0);
// break;
//+难点是如何表达当j为素数时,让其被打印在屏幕上,这里运用到一个标量标记法;
//+即定义一个变量值并在if语句中标记一下,如果变量值由定义值变为了标记值则说明if语句为真且执行了
//+若变量值未发生改变则说明if条件为满足也说明当前的i是素数
if (i % j == 0)//now
{
pot = 0;//如果可以整除将pot值标记为0
break;
}
}
if (pot==1)
printf("%d ",i);
}
return 0;
}
运行后发现结果无法正常运行出
,这是因为定义变量的位置出错,int j=1应该在第一个for循环内部
#include<stdio.h>
int main()
{
/*思路如下,
1,先将100-200运出出来 要运用到for循环,
2,然后判断是否为素数,具体措施就是分别除自身和1以外小于自身的数看余数是否为零,若输入i则除2到i-1
3,将2到i-1运行出来 还要运用到for循环*/
for (int i = 100; i <= 200; i++)//100-200的罗列
{
int pot = 1;//假设i为素数
for (int j = 2; j < i; j++)//2到i-1的罗列,接下来要判断是否能整除运用到if语句;
{
//before :if (i % j == 0);
// break;
//+难点是如何表达当j为素数时,让其被打印在屏幕上,这里运用到一个标量标记法;
//+即定义一个变量值并在if语句中标记一下,如果变量值由定义值变为了标记值则说明if语句为真且执行了
//+若变量值未发生改变则说明if条件为满足也说明当前的i是素数
if (i % j == 0)//now
{
pot = 0;//如果可以整除将pot值标记为0
break;
}
}
if (pot==1)
printf("%d ",i);
}
return 0;
}
法二:减少运行代码占用内存
从数的组成入手,分为奇数偶数题目要找出100-200中的素数已知偶数不是素数所以还可以这样写
#include <stdio.h>
int main()
{
for (int i = 101;i<200;i+=2)//这样直接减少了接近一半的内存占用
{
int j = 2;
int pot = 1;//假设i是素数
for(j = 2;j<i;j++)
{
if(i%j==0)
{
pot = 0;
break;
}
}
if(pot==1)
{
printf(”%d“,i);
}
}
return 0;
}